ASP.NET:显示视图而不通过控制器

时间:2014-07-31 15:20:14

标签: c# asp.net asp.net-mvc controller

我是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)访问视图,则信息会更新。

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

从您的评论和其他人的利益来看,IE在缓存方面更具侵略性,我个人怀疑是尝试虚张声势,因为它与chrome / firefox一样快:)

您可以通过查看网络/配置文件选项卡或iis日志来查看请求是否获得304(内容未更改)响应。

要解决此问题,只需在_layout中使用此方法,或在每次需要重新加载的每个视图中使用此方法暂停ajax调用的缓存

$.ajaxSetup({cache:false});

希望这有助于其他人