У меня есть приложение MVC. Он имеет частичный вид, который предоставляет несколько форм посредством цикла. Это формы ajax и должны обновлять пользовательский интерфейс при подаче. Проблема в том, что я могу войти в контроллер и правильно изменить модель, но пользовательский интерфейс не обновляется.Частичный просмотр MVC, содержащий несколько форм, не обновит UI
Это мой частичный вид. Вы можете увидеть цикл, который создает ряд АЯКС форм ...
@{
Layout = string.Empty;
}
<div id="divTileHistory">
@foreach (var t in Model.TileHistory)
{
<article class="tile-prev">
@using (Ajax.BeginForm("RemoveTileFromHistory", "Home", new { controller = "Home" }, new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divTileHistory" }, new { }))
{
<div class="tile-prev-inner">
<h1>
@t.Title</h1>
<p>
@t.Quote1</p>
</div>
<input type="hidden" name="archiveTileId" id="archiveTileId" value="@t.ArchiveTileId" />
<input id="[email protected]" type="submit" value="Delete" class="button primary small radius checkin" />
}
</article>
}
</div>
Частичный вид визуализируется на странице хозяина, как это ...
<section class="user-prev-tiles row">
<h3>
Tiles by @Model.User.SafeUserName</h3>
@Html.Partial("ProfileArchiveTilesPartial", Model)
</section>
И мой контроллер выглядит следующим образом. ..
[Authorize]
public PartialViewResult RemoveTileFromHistory(string archiveTileId)
{
UserModelActions u = new UserModelActions((User as CustomPrincipal).Id);
u.DeleteTileFromHistory(int.Parse(archiveTileId));
UserModel um = new UserModel((User as CustomPrincipal).Id);
return PartialView("ProfileArchiveTilesPatial", um);
}
Существует еще один частичный вид, который правильно обновляется на странице, поэтому я уверен, что у меня есть правильные сценарии. Мой контроллер также вызван на отправку формы правильно.
Я также считаю, что я правильно настроил идентификатор «target div».
Кто-нибудь знает, почему это может не работать?
Спасибо за предложения. Я попытался переместить div, но это не помогло. Я также наблюдал за возвращаемой моделью, глядя на нее в отладчике Visual Studio, она выглядит правильно (есть ожидаемое число в коллекции). Любые другие идеи? –
Выполняет ли действие контроллера правильную разметку? Вы посмотрели вкладку «Сеть» в Google Chrome? Вот где вы можете надежно увидеть, что именно вернулось из вашего запроса AJAX. –
Спасибо, ты положил меня на правильный путь. Chrome показал ошибку 500. В контроллере была опечатка. Он возвращал представление с именем «ProfileArchiveTilesPatial» вместо «ProfileArchiveTilesPartial». Легко, спасибо. –