Частичное представление 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, он возвращает его как новую страницу, и поведение, которое я ищу, похоже на панель обновления внутри div wing wing.
Любая помощь будет оценена.
1 ответ
Вы, кажется, уже делаете это благодаря UpdateTargetId = "wingrid"
вариант в вашей форме AJAX. Просто убедитесь, что вы очищаете значения, которые вы изменяете в действии контроллера 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>