0

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 が正しく設定されていると思います。

これが機能しない理由を誰かが知っていますか?

4

1 に答える 1