如何在c#字符串属性中插入HTML标签?

本文关键字:插入 HTML 标签 属性 字符串 | 更新日期: 2023-09-27 18:09:33

不知道如何,如果它是可能的,但我有这个类:

public string TextNotIncluded 
{ 
    get
    { 
        return ("which is <u>not</u> included in the Quote");
    }
}

在我的视图中显示的是<u></u>,而不是没有下划线的单词。我不熟悉c#。

谁能提供一个快速的答案?

谢谢。编辑:

在我看来,我只是把它命名为:@MyClass.TextNotIncluded。在我的情况下,用@Html.Raw包装它是无效的,因为我在几十个视图中都有这种情况。

如何在c#字符串属性中插入HTML标签?

这样做并没有什么本质上的错误,但它可能不会以你期望的方式呈现。

你可以像其他人建议的那样使用@Html.Raw,但我认为最好明确地声明你的模型,以表明它可能包含html。您可能需要使用MvcHtmlString类来代替:

public MvcHtmlString TextNotIncluded 
{ 
    get { return MvcHtmlString.Create("which is <u>not</u> included in the Quote"); }
}

然后在视图中使用:

@Model.TextNotIncluded

如果你使用Razor,字符串默认是html编码的-你需要使用Html.Raw来关闭编码:

@Html.Raw(x.TextNotIncluded)

在ASPX引擎中,您将使用<%= %>

<%= x.TextNotIncluded %> - this gives you the raw text
<%: x.TextNotIncluded %> - this HTML-encodes your text - you don't want this.

要输出原始HTML,请使用Raw HTML帮助器:

@Html.Raw(TextNotIncluded)

这个帮助器不对输入进行HTML编码,所以使用时要小心。

需要对字符串进行HTML编码。大多数人都推荐MVC方法,但我想让它更独立于表示层。

public string TextNotIncluded { 
    get { 
        return System.Web.HttpUtility.HtmlEncode("which is <u>not</u> included in the Quote"); 
    }
}

您可以使用

@Html.Raw(Model.TextNotIncluded)

@MvcHtmlString.Create(Model.TextNotIncluded)


但是最好改变属性的返回类型:
public MvcHtmlString TextNotIncluded
{
    get
    {
        return MvcHtmlString.Create("which is <u>not</u> included in the Quote");
    }
}