【问题标题】:MVC4 PartialViews without returningMVC4 PartialViews 不返回
【发布时间】:2014-10-10 04:26:37
【问题描述】:

主视图包含@Ajax.ActionLink 链接,这些链接使用部分视图更新 div 目标。一切正常。

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

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

问题是:当显示局部视图并单击当前时,我会更新数据并返回到重新加载数据的相同局部视图。还重新加载下拉列表..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。?

【问题讨论】:

  • 我建议您使用更多代码改进您的问题。现在有很多猜测。
  • 是的,你可以。例如,从您的方法返回 204 No Content Status 代码。当您的 AJAX 调用成功时,显示消息。或return Content("Success!") 并显示。
  • @DasKrümelmonster 当我尝试返回 Content("Success!") 时出现错误无法将类型“System.Web.Mvc.ContentResult”隐式转换为“System.Web.Mvc.PartialViewResult”
  • 将返回类型改为ActionResult
  • @DasKrümelmonster 它可以显示消息,但它会替换部分视图。是否可以显示带有部分视图内容的消息?

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


【解决方案1】:

定义 ActionLink 时,您可以选择要替换的元素:

@Ajax.ActionLink("Do something", "_Methodname", new AjaxOptions {
HttpMethod = "POST",
UpdateTargetId = "StatusMessage",
InsertionMode = InsertionMode.Replace,
}, new {@class = "text-danger"})
<span id="StatusMessage"></span>

这样,消息就会被加载到 span 元素中。


在这种情况下,我会将 actionlink 包含在 div 中,并将 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 并在控制器中使用不同的方法。

【讨论】:

  • 我在主视图中使用带有替换元素的 actionlink。我更新了我的问题,你能看看吗。
  • 感谢您的示例。
猜你喜欢
  • 1970-01-01
  • 2011-08-02
  • 2013-11-10
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
相关资源
最近更新 更多