MarkupString 无法按预期与 Blazor 中的 String.Format 配合使用

Rid*_*loo 0 c# blazor blazor-server-side .net-6.0

我正在尝试将字符串格式应用于来自资源文件的字符串。

<p class="note">@((MarkupString)(String.Format(Localizer["Test"], 2)))</p>
Run Code Online (Sandbox Code Playgroud)

但这是它在浏览器中的显示方式:

You have done <span class="text-primary text-bold"> 2 </span> tests.
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能让它采取正确的造型?

我已经尝试过这个解决方案,但它说:

The type or namespace name 'HtmlSanitizer' could not be found 
Run Code Online (Sandbox Code Playgroud)

我正在使用 Blazor 服务器和 .NET6

编辑:我有一个名为 App.resx 的文件

<data name="Test" xml:space="preserve">
    <value>
      You have done 
      &amp;lt;span class="text-primary text-bold"&amp;gt; 
        {0}
      &amp;lt;/span&amp;gt;
      tests.
    </value>   
</data>
Run Code Online (Sandbox Code Playgroud)

Gur*_*ron 5

您已经对资源字符串进行了双重编码,将其更改为You have done &lt;span class="text-primary text-bold"&gt; {0} &lt;/span&gt; tests

<data name="Test" xml:space="preserve">
  <value>You have done &lt;span class="text-primary text-bold"&gt; {0} &lt;/span&gt; tests</value>
</data>
Run Code Online (Sandbox Code Playgroud)

于是Localizer["Test"]返回You have done <span class="text-primary text-bold"> {0} </span> tests

请注意,如果您使用资源编辑器,则只需按原样添加字符串,它就会正确编码,以便将其存储在 xml 中。