部分视图未在IE 9.0中从ajax调用呈现

时间:2011-08-19 09:30:19

标签: asp.net-mvc model-view-controller asp.net-mvc-3

我正在进行ajax调用,在Mozilla和Chrome中工作正常,但在IE 9.0中没有。代码如下:

我无法理解为什么myDiv没有被刷新。保存是相应完成的,只是myDiv在IE9.0中没有刷新。

$.ajax({

                cache: false,
                contentType: "application/json; charset=utf-8",
                dataType: "html",
                url: "@Url.Action("Save", "Employee")",
                data:
                {
                    Id: $("#ID").val(),

                },
                success: function (data)
                {
                        $("#myDiv").html(data);                


                },
                error: function (request, status, error)
                { 
                                    }
           });

<div id="myDiv">
            @{Html.RenderPartial("NewPage", Model);}
        </div>

NewPage.cshtml

    @model MvcUI.Models.myModel
<div id="GridDiv">
<table>

</table>
</div>

控制器:

   [Authorize]
    public ActionResult NewPage( int Id)
    {
           return PartialView(new myModel(Id));
    }

    [Authorize]
    public ActionResult Save(int Id)
    {

        myModel.Save(Id);
        return RedirectToAction("NewPage", new {Id = Id});

    }

观察 我一直在做各种测试并观察到以下行为: 在调试模式下: 1.我第一次保存,保存完成并刷新表格。 2.第二次,保存完成并刷新表。 3.当我第四次执行此操作时,保存已完成,但未到达ActionResult NewPage(int Id),表格未刷新但显示了一些旧数据......!

在部署模式下: 1.仅我第一次保存,保存已完成并且表格刷新。 2.第二次,它只保存但不刷新表数据!

我没有任何错误或例外。

1 个答案:

答案 0 :(得分:1)

您是否尝试过设置响应过期标头?我有一些问题,当你没有设置以下内容时IE似乎没有重新加载页面:

<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>

我把它们放在ASP标签中,但如果您愿意,可以随意在控制器中执行此操作(而不是在每个操作中重复它,可能会创建初始化方法)

编辑:

根据@ learning的评论,还可以使用OutputCache属性有效地做同样的事情

[OutputCache(Duration = 0)]