如果链接指向当前页面,则浏览器无法获取页面或链接。在下面的代码示例中,我有一个链接(在菜单中)。如果用户当前在GetData页面中,并且用户再次单击“获取数据”链接,则不会发生任何事情。浏览器不会尝试检索页面。我在IE8和Chrome开发者工具中对此进行了监控。有什么想法吗?
//Link
<a href="@Url.Action("GetData", "Data")"><i class="glyphicon glyphicon-tag"></i>Get Data</a>
//Controller has a custom Authorization attribute
[AuthorizeRedirect]
public class DataController : Controller
// Controller Action Invoked
[HttpGet]
public ActionResult GetData(int parameter)
{
...
}
我从头开始创建一个测试Web应用程序,即使单击指向当前加载的页面的链接,页面也会刷新。
我比较了应用程序和测试应用程序中的两个响应头,并注意到缓存头中的差异。
我的申请包含以下内容:
Cache-Control:no-cache, no-store
虽然我的测试应用程序仅包含以下内容:
Cache-Control:private
其他信息:我正在使用Angular JS和Bootstrap客户端。
答案 0 :(得分:0)
我发生的事情是因为浏览器的缓存。清除浏览器缓存,然后重试。希望我会帮助
答案 1 :(得分:0)
如何在Application_PreSendRequestHeaders
中的Global.asax
事件中设置标题?
您可以使用Response.Cache.SetCacheability
而不是直接设置标题。*
void Application_PreSendRequestHeaders(Object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
通过手动设置标题的替代方式。
void Application_PreSendRequestHeaders(Object sender, EventArgs e)
{
Response.Headers.Set("Cache-Control", "no-cache");
}
如果你不想在任何地方都没有缓存,那么你可以尝试这样的事情:
[OutputCache(Location = OutputCacheLocation.None)]
public class HomeController : Controller
{
...
}