.NET项目中.cshtml无法关联同目录下.cshtml.css文件的问题咨询
.NET项目中.cshtml无法关联同目录下.cshtml.css文件的问题咨询
嘿,我来帮你排查下这个问题!你提到的.cshtml.css是.NET的Razor页面CSS隔离特性,正常情况下确实应该和同目录的视图自动关联,但没生效的话,大概率是下面这些原因之一,咱们一个个来排查:
检查你的.NET版本和项目类型:
这个CSS隔离特性的支持是分阶段的:- .NET 5:仅支持带
@page指令的Razor Pages - .NET 6+:同时支持Razor Pages和MVC视图
如果你用的是.NET 5及更早版本,而且你的test.cshtml是没有@page指令的MVC视图,那自动关联是不生效的,得升级到.NET 6+才行。
- .NET 5:仅支持带
确认项目是否启用了CSS隔离:
打开你的项目文件(.csproj),检查有没有相关配置。对于.NET 5+,默认是启用的,但如果被手动禁用了就会失效。确保没有类似下面的禁用配置:<DisableRazorComponentCssIsolation>true</DisableRazorComponentCssIsolation>另外,确保
<RazorCompileOnBuild>设置为true,这是编译时生成隔离CSS文件的必要条件。手动引用路径的问题:
你手动添加的<link>标签路径不对,因为CSS隔离的文件在编译后会被重命名(比如变成Views.example.test.css,还会带上哈希值),而且会被输出到wwwroot/css目录下,不是留在原视图目录。所以直接写test.cshtml.css是找不到的。
如果非要手动引用,应该用正确的根路径,比如:<link rel="stylesheet" href="@Url.Content("~/css/Views.example.test.css")" />不过更建议你不要手动加这个标签,因为自动关联会帮你注入正确的引用,手动加反而可能导致冲突。
清理并重新生成项目:
有时候编译缓存会导致CSS文件没正确生成,试试右键项目→清理,然后再右键→生成,之后看看wwwroot/css目录下有没有生成对应的隔离CSS文件。浏览器缓存的锅:
有时候浏览器会缓存旧的资源,导致新的CSS没加载出来。试试用Ctrl+F5强制刷新页面,或者清空浏览器的缓存再试。
备注:内容来源于stack exchange,提问作者Makouru
相关产品推荐
相关产品推荐

