主视图包含使用partialViews更新div目标的@Ajax.ActionLink
个链接。一切正常。
@Ajax.ActionLink("Update", "MemberInfo", new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "divCurrentView", InsertionMode = InsertionMode.Replace })
<div id="divCurrentView"></div>
问题是:当显示部分视图并且当前点击时,我更新数据并返回到重新加载数据的同一部分视图。还重新加载下拉列表..等等。
调用部分视图:
public PartialViewResult MemberInfo(){
.......
ViewBag.Members= new SelectList(_db.Members, "Id", "Text");
return PartialView("_MemberInfo",model);
}
[HttpPost]
public PartialViewResult MemberInfo(InformationVM model){
....... update data
//if I dont include the ViewBag again it will fail on reload
ViewBag.Members= new SelectList(_db.Members, "Id", "Text");
return PartialView("_MemberInfo",model);
}
而不是返回到相同的PartialView,我可以在屏幕上显示部分视图中“数据已更新”的消息。?
答案 0 :(得分:0)
定义ActionLink时,可以选择要替换的元素:
@Ajax.ActionLink("Do something", "_Methodname", new AjaxOptions {
HttpMethod = "POST",
UpdateTargetId = "StatusMessage",
InsertionMode = InsertionMode.Replace,
}, new {@class = "text-danger"})
<span id="StatusMessage"></span>
这样,消息就会被加载到span元素中。
在这种情况下,我会在div中包含actionlink并将div的内容(包括actionlink)替换为partial,这次包括另一个(不同的)actionlink。
<div id="divCurrentView">
@Ajax.ActionLink("Update", "MemberInfo", new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "divCurrentView", InsertionMode = InsertionMode.Replace })
</div>
部分:
<div id="divCurrentView">
@Ajax.ActionLink("Update", "MemberInfo", new AjaxOptions {
HttpMethod = "POST", UpdateTargetId = "StatusMessage", InsertionMode = InsertionMode.Replace})
<span id="StatusMessage"></span>
</div>
这样,第二次(和后续)点击将POST并使用控制器中的不同方法。