我是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 } })';
}
});
答案 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";