我是MVC的新手,所以我一直在苦苦挣扎...... 我有这个URL.Action:
<a data-toggle="modal" data-target="#modal" href="@Url.Action("Edit", "ControllerName", new { id=item.id })"></a>
使用bootstrap在模态中打开“编辑”视图。控制器是这样的:
// GET
[HttpGet]
public ActionResult Edit(int id = 0)
{
mv= bll.Details(id);
if (mv == null)
{
return HttpNotFound();
}
method(mv);
return PartialView(mv);
}
// POST:
[HttpPost]
public ActionResult Edit(TYPE pMv)
{
if (ModelState.IsValid)
{
bll.Edit(pMv);
return RedirectToAction("Index");
}
return PartialView(pMv);
}
所以我点击链接,它打开带有视图的模态,我更改数据,它保存在数据库中,一切正常。 问题出在 Internet Explorer :如果再次单击“编辑此项目”链接,它将打开模型中的视图,但不通过控制器的GET ActionResult,导致视图显示以前的视图信息,没有我所做的更改。
我可以对每个项目执行此操作,并且他们将显示他们自己的信息(不是来自上一个项目),但不更新我所做的更改。 如果我使用它的URL(// localhost:5528 / MV / Edit / 49)访问视图,则信息会更新。
知道为什么会这样吗?
答案 0 :(得分:1)
从您的评论和其他人的利益来看,IE在缓存方面更具侵略性,我个人怀疑是尝试虚张声势,因为它与chrome / firefox一样快:)
您可以通过查看网络/配置文件选项卡或iis日志来查看请求是否获得304(内容未更改)响应。
要解决此问题,只需在_layout中使用此方法,或在每次需要重新加载的每个视图中使用此方法暂停ajax调用的缓存
$.ajaxSetup({cache:false});
希望这有助于其他人