更改后视图不刷新

本文关键字:刷新 后视图 | 更新日期: 2023-09-27 18:32:23

我遇到了这个令人沮丧的问题。我在剃须刀视图 (cshtml)、Start without Debugging、刷新 (Ctrl+F5) 浏览器中更改文本,但没有任何反应。奇怪的是,如果我修改控制器的返回值(例如return Ok("test");)或包含的静态文件(如CSS),刷新,则更改是可见的。仅当我每次停止启动和停止调试时,Razor 视图才会更新。

以下是我已经尝试过的事情:

  • 已确保选中Detect when file is changed outside the environment
  • On run, when projects are out of date Always build.
  • 在Edge,Chrome和Firefox上尝试过这个,有和没有硬刷新。
  • 重新启动 Visual Studio 数字时间。
  • 清洁/重建解决方案。
  • 在新模板项目上执行此操作。

附言我看到有很多类似的问题,但是,没有一个答案似乎可以解决我的问题。

更新

这似乎是一个更大范围的问题。如果我:

  1. 在父视图中创建一个必需的剃须刀部分,如下所示@RenderSection("css", required: true)
  2. 不在子视图中实现呈现。
  3. 我(显然)得到了InvalidOperationException: The following sections have been defined but have not been rendered by the page at 'bla'bla'bla':css.
  4. 然后我实现它。
  5. 保存,在火狐中按 Ctrl+F5。错误仍然存在。

在这一点上,VS 2015实际上是无法使用的,因为你不知道,如果你真的错过了什么,或者它是VS的行为

更改后视图不刷新

我以前遇到过这个问题。我的情况是我在Macbook Pro上运行Windows 10 VM Parallel,项目文件位于mac OS的共享文件夹中。

如果有人和我一样有同样的情况,请将项目移动到非共享目录,例如 C:''将解决问题。

以下是幕后发生的事情:.NET 框架将你的剃刀编译成机器形式 (DLL) 并执行它。然后,它会监视您的 Web 文件夹以监视更改,当检测到更改时,它会重新编译您的 razor 并执行新的 DLL。

在您的情况下,似乎与监视文件更改相关的某些内容失败。它仍然在完全重新启动时工作,因为即使没有文件更改检测,也会进行编译。常见原因是:

  1. 你正在提供来自网络(NAS 或文件共享)的文件,这不允许你的电脑监视更改。这可能是缺少的功能(如非 SMB 文件共享)或权限问题。这在 Web 场方案中很常见,但可能不是您的开发方案。
  2. 其他东西已经锁定了文件(权限?),这会阻止此监视挂钩保留文件。

为了确认这是问题所在,我建议只编辑 web.config(添加/删除字符)并查看重新加载是否成功 - 只是为了证明这是一个重新编译问题而不是可视化工作室调试问题。假设是这种情况,并假设它不是 NAS,我建议暂时为文件夹授予"每个人 - 一切"权限,看看它是否有效,然后逐渐将权限再次减少到您想要的位置。

检查您的web.config并确保没有fcnMode="Disabled"fcnMode="NotSet"

<httpRuntime targetFramework="4.5.2" fcnMode="Default" />

<httpRuntime targetFramework="4.5.2" fcnMode="Single" />
  • 默认值 对于每个子目录,应用程序创建一个监视子目录的对象。这是默认行为。
  • 禁用
  • 的文件更改通知已禁用。
  • 未设置 NotSet 文件更改通知,因此应用程序会创建一个监视每个子目录的对象。这是默认值 行为。
  • 应用程序创建一个对象来监视主目录,并使用此对象监视每个子目录。

Fcn模式枚举

在并行虚拟机上,在 Macbook Pro 上,如果项目文件位于共享文件夹中,则重新编译机制将不起作用;将文件夹复制到驱动器 C,问题将得到解决

刚刚遇到了同样的问题。经过长时间的调试并尝试了几乎所有方法后,我们发现有人在Visual Studio中将文件从一个文件夹移动到另一个文件夹,并将其签入TFS。因此,项目文件已更新,但原始文件仍存在于磁盘上。所以我的本地 IIS 在新位置呈现旧文件而不是新文件。

这是令人沮丧的,是的。

如果你使用

Parallels WM 在 Mac 上运行,并且你的项目位于你的 Mac-Volume 上,你可以使用 chmod 来解决这个问题。

chmod -R 777 *

有两种方法可以解决此问题:

1.检查.sln文件所在的文件夹的权限。文件访问权限可能存在问题,因为Visual studio在IIS快速服务器运行时可能无法访问文件,因此每次需要重新启动服务器时都会反映新的.cshtml更改,因此我建议通过以下方式编辑文件夹访问权限:

右键单击文件夹->属性->安全->单击编辑按钮->选中所有选项->保存

重新启动 Visual Studio 以查看更改。

如果这不起作用,请使用 2 选项。

2.在启动的项目中.cs文件在方法中添加以下行 ConfigureServices():

服务业。AddMvc().添加剃刀选项(选项 => 选项。允许重新编译视图文件更改 = true);