Visual Studio 关于Blazor中动态内联CSS的警告

jljoyd4f  于 2022-12-27  发布在  其他
关注(0)|答案(2)|浏览(261)

不确定是否应该在Blazor或Visual Studio中修复这个问题,但我有一个Razor页面,其中包含基于某些逻辑生成的样式的内联CSS部分,因此它必须是动态的和内联的。这使得Visual Studio显示关于Unexpected character sequence in property value的警告CSS039

@{ var styles = new List<string>(); }

<div class="some-element"></div>

<style type="text/css">
  .some-element {
    background-image: @(string.Join(",", styles)); /* Warning is here */
  }
</style>

    • 问题**
  1. Blazor:有没有可能在一个单独的文件中包含动态CSS?
    1.可视化工作室:尝试在.editorconfig文件中抑制此警告,为什么它没有消失?
root = true

[*]
indent_style = space

[*.cs]
dotnet_diagnostic.CSS039.severity = none

[*.razor]
dotnet_diagnostic.CSS039.severity = none

[*.css]
dotnet_diagnostic.CSS039.severity = none
x6h2sr28

x6h2sr281#

这似乎摆脱了警告。

<style type="text/css">
    .some-element {
        background-image: @string.Join(",", styles);
    }
</style>

如果出于某种原因,您有一个需要@()的更复杂的代码块,您也可以在上面的代码块中将字符串作为局部变量计算,然后直接在样式中引用它。
例如

@{
    var styles = new List<string>() {"MyBackground.png"};
    var backgroundImage = string.Join(",", styles);
 }

 <div class="some-element"></div>

 <style type="text/css">
     .some-element {
         background-image: @backgroundImage;
     }
 </style>
flvlnr44

flvlnr442#

我不推荐这样做,用类名定义样式的原因是为了可读性、可重用性等等--如果动态生成样式属性,这些就不适用了。
因此,只要在使用类的任何地方使用内联样式属性就可以了:

<div style="@styleattributes" />

@code {
    string styleattributes = "background-color: black; width:50%;";
}

相关问题