3

我目前正在创建一个 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 调用来更新数据库。这两个工作正常,数据库和页面都更新了。我可以继续工作,所有更改都反映在页面和数据库中,重新加载部分视图时问题就开始了。

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

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

4

2 回答 2

3

它的浏览器缓存有效。它返回你缓存的结果。

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

$('#container').load("http://mysite/myview/?" + new Date().getTime(), function () { });
于 2011-11-23T10:59:57.530 回答
0

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

[OutputCache(Duration = 0)]
于 2011-11-23T13:49:01.597 回答