Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有了新的Razor视图引擎,我的HtmlHelpers应该返回字符串还是IHtmlString?_C#_Asp.net Mvc_Razor_Html Encode - Fatal编程技术网

C# 有了新的Razor视图引擎,我的HtmlHelpers应该返回字符串还是IHtmlString?

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(

使用Razor视图引擎,只要您将字符串直接输出到页面,它都是HTML编码的。e、 g:

@"<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>");
}