我正在进行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.第二次,它只保存但不刷新表数据!
我没有任何错误或例外。
答案 0 :(得分:1)
您是否尝试过设置响应过期标头?我有一些问题,当你没有设置以下内容时IE似乎没有重新加载页面:
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
我把它们放在ASP标签中,但如果您愿意,可以随意在控制器中执行此操作(而不是在每个操作中重复它,可能会创建初始化方法)
编辑:
根据@ learning的评论,还可以使用OutputCache属性有效地做同样的事情
[OutputCache(Duration = 0)]