C# 有了新的Razor视图引擎,我的HtmlHelpers应该返回字符串还是IHtmlString?
使用Razor视图引擎,只要您将字符串直接输出到页面,它都是HTML编码的。e、 g:C# 有了新的Razor视图引擎,我的HtmlHelpers应该返回字符串还是IHtmlString?,c#,asp.net-mvc,razor,html-encode,C#,Asp.net Mvc,Razor,Html Encode,使用Razor视图引擎,只要您将字符串直接输出到页面,它都是HTML编码的。e、 g: @"<p>Hello World</p>" 在浏览器中显示为: 你好,世界 但问题是,到目前为止,在创建Html帮助程序时,使用旧的aspx视图引擎,我只会返回一个字符串,并将其输出到浏览器: <%= Html.MyCoolHelperMethod(); %> 或者我应该这样做: public static IHtmlString MyCoolHelperMethod(
@"<p>Hello World</p>"
在浏览器中显示为:
你好,世界
但问题是,到目前为止,在创建Html帮助程序时,使用旧的aspx视图引擎,我只会返回一个字符串,并将其输出到浏览器:
<%= Html.MyCoolHelperMethod(); %>
或者我应该这样做:
public static IHtmlString MyCoolHelperMethod(this HtmlHelper helper)
{
return new helper.Raw("<p>Hello World</p>");
}
public static string MyCoolHelperMethod(this HtmlHelper helper)
{
return "<p>Hello World</p>";
}
显然,第一种方法使视图看起来更清晰,但我只是想知道,实际上常见的模式是否是帮助者返回
IHtmlString
,而我过去一直在做错事。在大多数情况下,您应该返回IHtmlString
的实例。这是内置helper遵循的模式,这意味着helper的使用者不需要担心编码不足或过度
您不应该使用Raw
函数,而应该返回HtmlString
的新实例
public static IHtmlString MyCoolHelperMethod(this HtmlHelper helper) {
return new HtmlString("<p>Hello World</p>");
}
公共静态IHtmlString MyColHelperMethod(此HtmlHelper帮助程序){
返回新的HtmlString(“helloworld”);
}
*请注意,MVC 3实际上使用
MvcHtmlString
作为其助手的返回类型,但这是MVC 2天的延迟。(故事很复杂,但简而言之,IHtmlString
仅在.NET4中引入,而且由于MVC2支持.NET3.5,MvcHtmlString
类型作为中间步骤引入)。所有针对MVC 3和更高版本的帮助程序都应该返回IHtmlString
看看这个:您应该返回IHtmlString“所有针对MVC 3和更高版本的帮助程序都应该返回IHtmlString。”-这正是我需要知道的!
public static IHtmlString MyCoolHelperMethod(this HtmlHelper helper) {
return new HtmlString("<p>Hello World</p>");
}
@Html.Raw(Html.MyCoolHelperMethod());
public static IHtmlString MyCoolHelperMethod(this HtmlHelper helper) {
return new HtmlString("<p>Hello World</p>");
}