Asp.net mvc 为什么我的应用程序缓存中都有Razor视图?

Asp.net mvc 为什么我的应用程序缓存中都有Razor视图?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我有一个MVC3应用程序,我在其中使用razor视图。我有一个SiteLayout.cshtml页面,这是我的网站母版页。然后,我有一个Login.cshtml页面,它使用SiteLayout.cshtml作为母版页。我还有一个_ViewStart.cshtml页面,它将母版页应用于所有cshtml页面 我最近在我的登录页面上添加了一个“忘记密码”链接。当我运行应用程序时,它不会显示新链接。我清理了解决方案并重新构建了解决方案,但这没有帮助。这几乎就像剃须刀视图被缓存一样。我检查了我所有的浏览器

我有一个MVC3应用程序,我在其中使用razor视图。我有一个SiteLayout.cshtml页面,这是我的网站母版页。然后,我有一个Login.cshtml页面,它使用SiteLayout.cshtml作为母版页。我还有一个_ViewStart.cshtml页面,它将母版页应用于所有cshtml页面

我最近在我的登录页面上添加了一个“忘记密码”链接。当我运行应用程序时,它不会显示新链接。我清理了解决方案并重新构建了解决方案,但这没有帮助。这几乎就像剃须刀视图被缓存一样。我检查了我所有的浏览器设置(如Firefox、Chrome),以确保它们没有缓存

我完全被这个难住了。有什么想法吗

以下是母版页的代码:

@using System.Web.UI.WebControls
@{
    Layout = null;
}
<!DOCTYPE html>
<html lang="en">
<head runat="server">
    <title>Application - @ViewBag.Title</title>
    <script src="/Scripts/jquery-1.7.min.js" type="text/javascript"> </script>
    <script src="/Scripts/jquery.tools.min.js" type="text/javascript"> </script>
    <link rel="stylesheet" type="text/css" media="all" href="/Content/Site.css" />
</head>
<body>
    <!-- Total width: 1180px -->
    <div id="maincontainer">
        <div id="header">
            <span style="text-align:left; float:left;">Header</span>
            <span style="text-align:right; float:right; width:200px;">@Html.Partial("LoginStatus")</span>
        </div>
        <div id="maincontent">
            @RenderBody()
        </div>
    </div>
</body>
</Html>

点击[control]+F5以强制刷新

在每个操作方法上方,可以为该页面设置输出缓存属性。这里有一篇关于它的文章


或者,您可以在web.config中设置缓存首选项站点范围内的缓存首选项。除了您提到的清理和重建之外,您可能还需要检查并确保没有运行.NET开发服务器的任何实例

如果您根本不希望发生缓存,可以使用以下属性确保未缓存任何内容:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
//Your Controller Here

我想我已经弄明白了。我确信这与我的机器的配置有关,因为它不会发生在其他机器上。因此,我没有允许VS2010分配自己的端口,而是强制选择了一个端口。现在我得到了新的视图。

我尝试了这个方法,但视图仍然被缓存。我还确保没有任何其他运行.NETWeb服务器的实例。这是最奇怪的。这很奇怪-你可以尝试将[OutputCache]属性放在调用该视图的方法上?它是传统加载还是部分视图,可能是通过AJAX加载的?我已经更新了我的原始帖子并从视图中添加了html。我正在使用@renderbody方法自动将登录视图的内容呈现到母版页中。你试过几次点击控件和f5吗?也许试着将链接移动到文本框上方。也许CSS正在隐藏它。如果从浏览器查看源,它是否显示在源中?最后,我会尝试使用一个标准标记来代替helper,我也试过了。这几乎就像开发web服务器以某种方式缓存输出一样。我看到的视图和我遵循的视图有几个不同的版本。还有一点,我将该网站发布到IIS&它显示了视图的正确版本。那么,为什么IIS会显示正确的视图,而内置开发服务器不会显示?
@{
    Layout = "~/Views/Shared/SiteLayout.cshtml";
}
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]
//Your Controller Here