mvc部分视图ajax更新返回部分视图作为页面
问题描述:
我有一个局部视图,在向数据库添加项目时需要更新。mvc部分视图ajax更新返回部分视图作为页面
的Index.cshtml:
@using (Ajax.BeginForm("Index", "WinEntry", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "wingrid", InsertionMode = InsertionMode.Replace}))
{
@Html.Partial("_winVenue")
@Html.Partial("_singleWin")
}
<div id="wingrid">
@Html.Partial("_wingrid")
</div>
的_singleWin具有提交按钮
控制器:
[HttpPost]
public ActionResult Index(Win win)
{
win.dealerId = "1234567890";
win.posterid = "chris";
win.posttime = DateTime.Now;
wem.addWin(win);
IEnumerable<Win> w = wem.getVenueWins(win.venue,win.windate);
return PartialView("_wingrid",w);
}
当控制器返回局部视图_wingrid它返回它作为一个新的页面,我正在寻找的行为就像一个更新在wingrid div内的e面板。
任何帮助,将不胜感激。
答
由于AJAX表单中的UpdateTargetId = "wingrid"
选项,您似乎已经这么做了。只要确保清除了您在POST控制器操作中从模型状态中修改的值。否则,HTML辅助仍然可以使用旧值:
[HttpPost]
public ActionResult Index(Win win)
{
ModelState.Remove("dealerId");
win.dealerId = "1234567890";
ModelState.Remove("posterid");
win.posterid = "chris";
ModelState.Remove("posttime");
win.posttime = DateTime.Now;
wem.addWin(win);
IEnumerable<Win> w = wem.getVenueWins(win.venue,win.windate);
return PartialView("_wingrid",w);
}
而且不要忘了包括jquery.unobtrusive-ajax.js
脚本到你的页面,如果你希望你的Ajax.*
佣工的工作:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
+0
感谢达林,我在布局中加入了一些我整理/删除的其他脚本。当删除我删除不显眼。 – Chris 2012-02-19 16:13:33
您有加入MicrosoftAjax。 js和MicrosoftMvcAjax.js在你想要更新的页面中? – cpoDesign 2012-02-19 14:30:02