[asp.net-mvc]创建帮助器方法返回编码文本

标签: Asp.net-MVC C#
发布时间: 2016/10/9 5:56:34
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我已经创建了一个这样的 html 帮助器方法

  public static class abcExtensions
  {
    public static string Label1(this HtmlHelper helper, string target, string text)
    {
        return String.Format("<label for='{0}'>{1}</label>", target, text);

    }
}

但其他鞋子累死我用它喜欢

@Html.Label1(..)

它呈现这样的编码的文本

< = 'aa' 标签 > qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq < / 标签 >

我不想使用 @Html.Raw

如何呈现而不是编码文本的 Html?

解决方法 1:

您需要返回 IHtmlString 返回 Html 编码的字符串喜欢;

public static IHtmlString Label1(this HtmlHelper helper, string target, string text)
{

   return new HtmlString(String.Format("<label for='{0}'>{1}</label>", target, text));

}

HtmlString换行被假定为不需要 HTML 编码的字符串。它实现了 IHtmlString ,所以,当调用 HttpUtility.HtmlEncode(htmlString) 的字符串不能编码。

你可以看到这张贴以及这也解释了更多时候你应该使用 HtmlString 所说︰

你应该记住是Razor将一切编码默认情况下,但是通过在你的 html 帮助器使用 MvcHtmlString 你可以告诉Razor,它并不需要对其进行编码

如果你有兴趣看看它是如何工作,你总能看到源代码

赞助商