MVC 4 - 如何使用JavaScript加载视图

时间:2013-04-05 13:15:47

标签: jquery asp.net-mvc asp.net-mvc-4

我是MVC和JavaScript的新手。我在View上有一个下拉列表('ProcessGroupRevisions'),当用户在下拉列表中选择某个项目时,我想在控制器中执行一个将呈现新视图的操作。我有以下代码,有点潦倒。但我知道这是不对的(因为它不起作用),但我不确定我需要做些什么来使它工作。

        // This handles the onchange for the Revisions dropdown.
        $("#ProcessGroupRevisions").change(function () {
            if ($("#ProcessGroupRevisions").prop("value") == "-1") {
                '@Url.Action("AddNewRevision", "SetpointManagement", new RouteValueDictionary { { "processGroupId", ViewBag.ProcessGroupId } })';
            }
        });

3 个答案:

答案 0 :(得分:5)

您可以尝试使用jquery加载方法:

$('#yourContainer').load('/ControllerName/ActionName');
在这种情况下,“yourContainer”必须是您要用作视图容器的HTML元素的ID。您可能还需要一些额外的逻辑来避免将那个硬编码的URL提供给控制器。在这种情况下,你可以这样做:

var baseUrl = '@Url.Content("~")'

$("#yourContainer").load(baseUrl + "ControllerName/ActionName");

请注意,baseUrl变量必须在CSHTML文件中定义,而不是在单独的js文件中定义,因为它必须在服务器端处理。

答案 1 :(得分:3)

抱歉在我第一次完成之前意外发布了。

<script>
    $(function(){
        $("#ProcessGroupRevisions").change(function () {
            if ($("#ProcessGroupRevisions :selected").val() == "-1") {
                var url = '@Url.Action("AddNewRevision", "SetpointManagement")';
                //To load the view via AJAX
                $("#GroupRevisionDetails").load(url, new {processGroupId: $("#ProcessGroupRevisions :selected").val()});
                //To load the view and replace the current page
                window.location.href = url + "?processGroupId=" + $("#ProcessGroupRevisions :selected").val();
            }
        });
    });
</script>

<select id="ProcessGroupRevisions">
    <option value="-1">-- Pick One --<option>
    <option value="1">Group Revision 1<option>
    <option value="2">Group Revision 2<option>
    <option value="3">Group Revision 3<option>
    <option value="4">Group Revision 4<option>
</select>

<div id="GroupRevisionDetails"></div>

答案 2 :(得分:2)

您可以尝试使用window.location
例如。

window.location = "/ControllerName/ActionName";