2014-10-09 108 views
0

主视图包含@Ajax.ActionLink用partialView更新div目标的链接。一切正常。MVC4部分视图无返回

@Ajax.ActionLink("Update", "MemberInfo", new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "divCurrentView", InsertionMode = InsertionMode.Replace }) 

<div id="divCurrentView"></div> 

的问题是:当显示partialview和点击我目前更新数据并返回到重新加载数据的相同局部视图。同时会dropdownlists..etc`

调用管窥:

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

我建议你用更多的代码来改善你的问题。现在很多猜测。 – Mrchief 2014-10-09 19:40:41

+0

是的,你可以。例如,返回方法中没有内容状态代码。当您的AJAX调用成功时,显示消息。或'返回内容(“成功!”)并显示。 – 2014-10-09 19:42:05

+0

@DasKrümelmonster当我尝试返回内容(“成功!”)我得到一个错误不能隐式地将类型'System.Web.Mvc.ContentResult'转换为'System.Web.Mvc.PartialViewResult – Ben 2014-10-09 19:44:25

回答

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的)的与该部分的内容,这次包括另一个(不同的)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和在控制器使用不同方法。

+0

我在主视图中使用actionlink替换元素..我更新了我的问题,请你看看它。 – Ben 2014-10-09 20:06:29

+0

感谢您的示例。 – Ben 2014-10-10 04:13:45