我正在使用MVC 4并且有一个@ HTML.DropdownlistFor(),它根据它的选择加载页面的其余部分。在更改列表框时,我想重新加载页面,以便加载正确的数据。此外,还有两个其他参数可以正确加载页面。
在Create.cshtml视图中
@Html.DropDownListFor(model => model.SelectedMissionID, Model.MissionsToDisplay, new { onchange = "ReloadPage();" })
function ReloadPage() {
window.location = '@Html.Raw(Url.Action("CreateEdit", "DailyLog", new { ID = 1, ID2 = 0, dailyLogDate = Model.LogDate }))';
}
如果ID = 1,我想要DropdownlistFor(SelectedMissionID)的选定索引,我该怎么做?
我不确定这是否是转到控制器的最佳方式,或者如果我应该使用JQUERY .ajax帖子,还有更好的方法吗?
答案 0 :(得分:0)
我似乎非常适合ajax帖子。 你所做的就是OK,在ReloadPage()函数中,只需在DropDown中获取所选值,执行传递参数的Ajax调用,并在成功回调中将返回的HTML放入某个容器中。
这个想法是你用Ajax调用的返回替换视图的一部分,而不是整个页面。
使用jQuery获取所选值:
var selectedValue = $("select[name='SelectedMissionID']").val();
这可以放在你的ReloadPage()函数中。
$.post( "your action URL", { ID: selectedValue, OtherParam: "xxxxx" })
.done(function( data ) {
alert( "Data Loaded: " + data );
//here you need to get the HTML, and put in a container
});