gpt4 book ai didi

c# - 使用新的 Razor View 引擎,我的 HtmlHelpers 应该返回字符串还是 IHtmlString?

转载 作者:IT王子 更新时间:2023-10-29 04:14:34 25 4
gpt4 key购买 nike

使用 Razor View 引擎,无论何时您将字符串直接输出到页面,它都是 HTML 编码的。例如:

@"<p>Hello World</p>"

实际上会将页面输出为:

&lt;p&gt;Hello World &lt;/p&gt;

在浏览器中显示为:

Hello World

问题是,在创建 Html 助手时,到目前为止,使用旧的 aspx View 引擎我只会返回一个字符串,并将其输出到浏览器:

<%= 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());

显然第一种方法使 View 看起来更清晰,但我只是想知道常见模式是否实际上是帮助程序返回 IHtmlString 而我一直在做错过去。

最佳答案

在大多数情况下,您应该返回 IHtmlString 的实例。这是内置助手*遵循的模式,这意味着助手的使用者无需担心编码不足或过度编码。

与其使用 Raw 函数,不如返回一个新的 HtmlString 实例。

public static IHtmlString MyCoolHelperMethod(this HtmlHelper helper) {
return new HtmlString("<p>Hello World</p>");
}

*请注意,MVC 3 实际上使用 MvcHtmlString 作为其助手的返回类型,但这是 MVC 2 天的遗留问题。 (复杂的故事,但简而言之,IHtmlString 仅在 .NET 4 中引入,并且由于 MVC 2 支持 .NET 3.5,因此引入了 MvcHtmlString 类型作为中间步骤)。所有以 MVC 3 及更高版本为目标的帮助程序都应返回 IHtmlString

关于c# - 使用新的 Razor View 引擎,我的 HtmlHelpers 应该返回字符串还是 IHtmlString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4596834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com