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

0

尝试将divTileHistorydiv 移到主视图中的部分之外:

<section class="user-prev-tiles row">
    <h3>Tiles by @Model.User.SafeUserName</h3>
    <div id="divTileHistory">
        @Html.Partial("ProfileArchiveTilesPartial", Model)
    </div>
</section>

还要确保您传递给视图的模型RemoveTileFromHistory具有正确的TileHistory集合数量。您可以使用NetworkGoogle Chrome 的标签来检查控制器操作返回的确切部分标记,并检查它是否正确。

于 2013-09-15T16:02:03.440 回答