我已经创建了一个像这样的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(..)
它呈现像这样的编码文本
&lt; label for ='aa'&gt; qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq&lt; / label&gt;
我不想使用@ Html.Raw
如何渲染Html而不是编码文本?
答案 0 :(得分:3)
你需要返回IHtmlString
,它返回Html-Encoded字符串,如;
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)
时,字符串不会被编码。
您也可以看到这个post,它解释了您何时应该使用HtmlString
说明的更多内容:
你应该记住的是剃刀在默认情况下对所有内容进行编码,但是通过在你的html助手中使用MvcHtmlString,你可以告诉剃刀它不需要对其进行编码
如果您有兴趣了解其工作原理,也可以随时查看the source code 。
答案 1 :(得分:0)
让你的帮助方法返回一个HtmlString而不是字符串。
https://msdn.microsoft.com/en-us/library/system.web.htmlstring(v=vs.110).aspx