MVC アプリケーションがあります。ループを介して多数のフォームをレンダリングする部分ビューがあります。これらは ajax フォームであり、送信時に UI を更新する必要があります。問題は、コントローラーにステップインでき、モデルが正しく変更されるのに UI が更新されないことです。
これは私の部分的な見方です。多数の ajax フォームを作成するループが表示されます...
@{
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="submit_@t.ArchiveTileId" 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);
}
ページ上で正しく更新される別の部分ビューがあるので、正しいスクリプトが含まれていると確信しています。私のコントローラーは、フォームの送信時にも正しく呼び出されます。
また、「ターゲット div」ID が正しく設定されていると思います。
これが機能しない理由を誰かが知っていますか?