5

我对 MVC 和 JavaScript 很陌生。我在视图上有一个下拉列表('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 } })';
            }
        });
4

3 回答 3

6

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

$('#yourContainer').load('/ControllerName/ActionName');

在这种情况下,“yourContainer”必须是要用作视图容器的 HTML 元素的 ID。您可能还希望有一些额外的逻辑来避免将硬编码的 URL 放在那里的控制器。在这种情况下,您可以执行以下操作:

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

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

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

于 2013-04-05T13:20:06.880 回答
4

对不起,在我第一次完成之前不小心发布了。

<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>
于 2013-04-05T13:27:44.473 回答
3

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

window.location = "/ControllerName/ActionName";
于 2013-04-05T13:28:33.510 回答