如果链接到当前页面,浏览器不会获取页面或链接无法正常工作

时间:2014-01-29 01:40:53

标签: html asp.net asp.net-mvc internet-explorer google-chrome

如果链接指向当前页面,则浏览器无法获取页面或链接。在下面的代码示例中,我有一个链接(在菜单中)。如果用户当前在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客户端。

2 个答案:

答案 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
{
...
}