MVC部分视图模型不刷新

Nat*_*eid 6 asp.net-mvc jquery

我有被加载到一个模态的jQuery在asp.net MVC 3的问题是,所述视图不刷新正确的局部视图.以下是事件的顺序:

1)主视图有一个列出不同事件记录的表.表格的每一行都有一个链接来显示事件详细信息.2)单击此表上的链接时,部分视图将加载到模态中.

这在某些情况下工作正常,在其他情况下,模型将需要很长时间才能加载.从表上主视图关闭局部视图/模态和点击另一个链接后,局部视图将加载示出从先前的负载中的数据.它没有正确刷新.

主视图上Modal的定义: 载入中,请稍候......

<script type="text/javascript">
    $(document).ready(function () {
        $("#EventRegistrantSummary").dialog({
            bgiframe: true, autoOpen: false, height: 500, width: 980, resizable: false, modal: true
        });
    });
    function showEventRegistrantSummary(id) {
        $.get("/Event/EventRegistrantSummary/" + id, function (data) {
            $("#EventRegistrantSummary").html(data);
        });
        $("#EventRegistrantSummary").dialog('open'); return false;
    }
</script>
Run Code Online (Sandbox Code Playgroud)

控制器:

    public PartialViewResult EventRegistrantSummary(Guid id)
    {
        ModelState.Clear();
        Event e = db.Events.Single(ev => ev.ID == id);
        return PartialView(e);
    }
Run Code Online (Sandbox Code Playgroud)

局部视图:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<model.Event>" %>
<% using (Ajax.BeginForm("EditUpdate", new AjaxOptions { UpdateTargetId="Target", InsertionMode= InsertionMode.Replace}))
       {%>

       <h6 style="text-align:center">Registration Summary: <%= Model.Name %></h6>

       <div style="float:left;width:35%">
            <fieldset id="Overview">
                <legend>Overview</legend>
                <div class="editor-label">
                    Total Registrants: <%= Model.BoatEventRegistrations.Count() %>
                </div>
            </fieldset>
           </div>
    <% } %>
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢.

jga*_*fin 8

使用控制器操作上的OutputCacheAttribute禁用缓存.

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public PartialViewResult EventRegistrantSummary(Guid id)
{
    ModelState.Clear();
    Event e = db.Events.Single(ev => ev.ID == id);
    return PartialView(e);
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢一百万jgauffin ...这帮助我和我的编程同行解决了一个关于在`POST`动作中返回的`PartialView`的讨厌错误.`ModelState.Clear()`非常重要.仅执行`OutputCache`部分是不够的. (2认同)

Dar*_*rov 5

听起来像是一个缓存问题.某些浏览器可以缓存GET请求.尝试通过设置替换$.getAJAX调用或尝试请求:$.ajaxcache: false$.post

$.ajax({
    url: '<%= Url.Action("EventRegistrantSummary", "Event") %>',
    type: 'GET',
    cache: false,
    data: { id: id },
    success: function(data) {
        $('#EventRegistrantSummary').html(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

此外,您不需要在EventRegistrantSummary操作中清除ModelState,因为您没有修改任何值.