MVC4 PartialViews没有返回

时间:2014-10-09 19:16:27

标签: asp.net-mvc asp.net-mvc-4 partial-views

主视图包含使用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,我可以在屏幕上显示部分视图中“数据已更新”的消息。?

1 个答案:

答案 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并使用控制器中的不同方法。