MVC - 部分视图保持显示相同的内容

时间:2011-11-23 10:52:43

标签: c# asp.net-mvc internet-explorer asp.net-mvc-partialview

我目前正在创建一个MVC应用程序,它基本上只是一个用于数据库内容的大型CRUD工具。 对于用于限制某些选择的小表(国家,类别,类似的东西),我创建了1个页面来加载所请求的表,并允许用户仅使用Ajax调用添加/删除/编辑属性。

加载页面后,用户会获得包含所有表名的下拉列表。提交后,将触发以下代码:

public PartialViewResult OpenConfig(string SelectID)
{
    using (DBconnection db = new DBconnection())
    {
        switch (SelectID)
        {
            case "---":
                return null;
            case "1":
                var countries = (from x in db.tbl_CountriesSet select x).ToList();
                return PartialView("Countries", countries);
            case "2":
                var supplierstatus = (from x in db.tbl_SupplierStatusSet select x).ToList();
                return PartialView("Supplierstatus", supplierstatus);
            case "3": .....
        }
    }
}

这里有趣的地方。假设我打开了“国家/地区”窗口,它正确加载,我可以添加/编辑/删除国家/地区。这些条目使用jQuery在页面上更新,并且同时使用Ajax调用来更新数据库。这两个工作都很好,数据库都更新和页面。我可以继续工作,所有更改都反映在页面和数据库中,重新加载局部视图时会出现问题。

当我在下拉列表中选择Countries值并再次提交时,程序只是跳过上面显示的方法,并显示我第一次请求列表时显示的相同局部视图。 我在方法中设置了一个断点,如果我在触发之前加载了一些我没有加载的东西,而不是我已经请求过的页面。 在Firefox中,这可以工作,并且部分视图会更新(并且会触发断点),但是在Internet Explorer中,我的控制器被完全忽略并且它会一直显示相同的页面(即使我去了一个完全不同的页面然后返回到设置页面。)

有谁能告诉我如何告诉IE显式重新加载包含当前数据库内容的部分视图?

2 个答案:

答案 0 :(得分:3)

这是浏览器缓存的工作原理。它会返回缓存的结果。

使用将当前日期值添加到url以允许从Web服务器加载新结果:

$('#container').load("http://mysite/myview/?" + new Date().getTime(), function () { });

答案 1 :(得分:0)

在控制器功能之上,尝试:

[OutputCache(Duration = 0)]