【问题标题】:How to use Razor like asp:Literal?如何像 asp:Literal 一样使用 Razor?
【发布时间】:2011-04-04 08:34:32
【问题描述】:

我有一个简单的模型:

public class MyModel
{
     public string Text{get;set;}
}

我有一个视图,它呈现 MyModel 的 Text 属性:

<p>@Model.Text</p>

如何从 Text like 标签呈现 html 标签?例如,我有文本“&lt;b&gt;Text&lt;/b&gt;”。我想在标签 p 内得到粗体文本作为结果:

文字

但 Razor 会按原样呈现文本:

<b>Text</b>

【问题讨论】:

    标签: tags razor


    【解决方案1】:

    我认为你需要像这样使用它:

    <p>@Html.Raw(Model.Text)</p>
    

    您可以在 Phil Haack 的博客上找到更多信息 here

    anurse 在 cmets 中指出,您也可以将 View Model 类型的 Text 成员的类型设置为 IHtmlString,然后使用 @Model.Text 输出它。 ASP.NET MVC 足够聪明,可以意识到输出不应该被转义。

    【讨论】:

    • 当你偶尔想渲染一些没有 HTML 编码的内容时,这是一个很好的解决方案。当您知道模型的一个属性总是不应该被自动编码的 HTML 内容时,您应该将该属性的类型设为 IHtmlString。因此,如果将 Text 更改为 IHtmlString 而不是字符串,则可以键入 @Model.Text,Razor 将正确输出标签。这样,很明显某些内容是 HTML,应该仔细清理以避免 HTML 注入攻击。
    • @anurse:哇,很棒的评论。我自己不知道。我将更新答案以添加此信息。
    猜你喜欢
    • 2016-02-03
    • 2023-03-28
    • 2021-09-09
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2021-08-07
    相关资源
    最近更新 更多