在Blazor中有相当于Html.Raw的东西吗?

Dav*_*ave 16 blazor

我有一些存储在字符串中的HTML.如何渲染这是没有自动HTML编码的Blazor/Razor视图?

Max*_*lov 31

Blazor0.5.0版本中添加了用于呈现原始HTML的功能.这是如何通过string包含HTML内容呈现原始HTML的示例:

@((MarkupString)myMarkup)

@functions {
    string myMarkup = "<p class='markup'>This is a <em>markup string</em>.</p>";
}
Run Code Online (Sandbox Code Playgroud)

更多信息可以在"Blazor 0.5.0 Experimental release now available"公告中找到.

  • 注意:MarkupString 是自动关闭标签,因此它根本不是“原始”的。如果您尝试输出“&lt;div&gt;”,结果将是“&lt;div&gt;&lt;/div&gt;”。 (9认同)
  • 请注意,您可以使用 MarkupString 将 &lt;script&gt; 标记注入动态 Blazor 页面,这通常是 Blazor 不允许的。也许这不是我应该做的,但如果您想插入自定义 Google 搜索框,它会很有用。 (2认同)

小智 13

是的,样本:

@page "/"

<h2>Title</h2>
<hr />
<p>
    @ms
</p>
Run Code Online (Sandbox Code Playgroud)
@code {
    MarkupString ms => (MarkupString)description;

    string description = $@"
This is an example of how Azure serverless functions can be consumed from Blazor WASM.
<br><br>
To run this project in development mode, the <b>HttpTriggerSample</b> project must be run simultaneously.
<br><br>
Serverless Functions origin: <b>{fs}<b>.";

    // by example
    static string fs => Program.IS_DEVELOPMENT ? "DevelopmentStorage" : "Azure";
}
Run Code Online (Sandbox Code Playgroud)

  • MarkupString 是自动关闭标签,因此它根本不是“原始”的。如果您尝试输出“&lt;div&gt;”,结果将是“&lt;div&gt;&lt;/div&gt;” (3认同)

Ibr*_*imi 8

您还可以将原始 HTML 作为字符串存储到类型的变量中MarkupString,然后无需转换即可使用它。

@myMarkup

@code {
    private MarkupString myMarkup = 
        new MarkupString("<p class='markup'>This is a <em>markup string</em>.</p>");
}
Run Code Online (Sandbox Code Playgroud)

输出