【发布时间】:2011-06-03 13:37:41
【问题描述】:
使用 Razor 视图引擎,无论何时您将字符串直接输出到页面,它都是 HTML 编码的。例如:
@"<p>Hello World</p>"
实际上将输出到页面:
<p>Hello World </p>
在浏览器中显示为:
你好世界
但问题是,在创建 Html 帮助程序时,到目前为止,使用旧的 aspx 视图引擎我只会返回一个字符串,然后将其输出到浏览器:
<%= Html.MyCoolHelperMethod(); %>
所以我的问题基本上是这样的。我这样做:
public static IHtmlString MyCoolHelperMethod(this HtmlHelper helper)
{
return new helper.Raw("<p>Hello World</p>");
}
在这种情况下,我可以在我的 cshtml 中执行此操作:
@Html.MyCoolHelperMethod();
还是我这样做:
public static string MyCoolHelperMethod(this HtmlHelper helper)
{
return "<p>Hello World</p>";
}
在这种情况下,我需要在我的 cshtml 中完成这项工作:
@Html.Raw(Html.MyCoolHelperMethod());
显然第一种方法使视图看起来更干净,但我只是想知道常见的模式是否实际上是帮助者返回 IHtmlString 而我过去一直做错了。
【问题讨论】:
-
看这个:stackoverflow.com/questions/2293357/… 你应该返回 IHtmlString
标签: c# asp.net-mvc razor html-encode