为什么Blazor CSS隔离没有添加链接标记来加载捆绑的CSS文件



我为WASM项目中的css隔离功能创建了一个Blazor组件和一个附带的css文件。当页面被呈现时,我的元素没有得到css文件中定义的css样式。在检查元素时,我可以看到额外的b-*属性应用于它。我可以看到一个MyProject.Client.styles.css文件,在下面的css文件中添加了额外的b-*。。。\obj\Debug\net5.0\scopedcss\bundle\MyProject.Client.styles.css.(*是一些随机字符(

然而,我预计Blazor构建会在Head部分添加一个链接标记,这样浏览器就会加载这个新的捆绑css文件,但它不在那里。我使用了Fiddler,并验证了浏览器没有加载*.styles.css,这就是问题所在。已清除缓存和应用程序。

我是否缺少一些手动步骤或css隔离设置来添加链接标记?我使用的是.NET 5.0版本。

您必须手动将捆绑的CSS文件的标记添加到主页面。Blazor不会为您添加此项。

<link href="MyProjectName.styles.css" rel="stylesheet">

我在基于.NET 6的Blazor Server项目中遇到了非常类似的问题,我在该项目中使用了MudBrazor组件库。我不得不比公认的答案深入一点。

我的一个页面需要对表中的条件背景颜色进行一些调整,我无法应用孤立CSS文件中的类。在互联网上进行了几个小时的研究,并尝试将我的自定义CSS类从孤立的CSS文件转移到项目文件夹结构中的wwwrootcssstyles.css,以及CSS隔离的样式表链接的各种位置

<link href="<MyAssemblyName>.styles.css" rel="stylesheet"/>

事实证明,CSS隔离仅适用于普通HTML,而不适用于Razor组件、标记助手等。如MSDN文档中所述:

重要提示:作用域CSS仅适用于HTML元素,不适用于Razor组件或标记帮助程序,包括应用了标记帮助程序的元素,如<input asp-for="..." />

MudBrazor组件肯定是Razor组件,因此不支持作用域CSS功能。我不得不在wwwrootcssstyles.css样式表中保留我的自定义CSS类。有了这些,我就可以在我的页面/组件上实现我需要的外观。

如果您真的需要应用您的作用域CSS,您可以使用此处描述的::deep尝试解决方法。

最新更新