- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
使用 Razor View 引擎,无论何时您将字符串直接输出到页面,它都是 HTML 编码的。例如:
@"<p>Hello World</p>"
实际上会将页面输出为:
<p>Hello World </p>
在浏览器中显示为:
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/
我正在编写一个 ASP.NET MVC Html Helper,它基本上采用 2 个返回 IHtmlStrings 的 HTML Helper,并将它们组合在一起,并将它们作为 IHtmlString
我刚开始使用 RazorEngine,但在使用静态辅助方法时遇到了麻烦。它只是为模板生成一个 MvcHtmlString/IHtmlString。当调用 Razor.Parse(...) 我得到 Ra
我有一个包含通过 JSON 发布的原始 HTML 的字段,该字段最近从字符串转换为 IHtmlString。当这种变化发生时,该字段从一个 JSON 字符串变成一个空对象,并且一堆使用该 JSON 的
我已经通过 nuget 在 MVC4 应用程序中安装了 servicestack MVC,并尝试启用迷你分析器。 我已按照 Global.asax 中的说明完成以下操作: protected void
现在有点失落...... 我正在按照以下文章来测试/学习嵌套布局。 http://blogs.msdn.com/b/marcinon/archive/2010/12/15/razor-nested-l
使用 Razor View 引擎,无论何时您将字符串直接输出到页面,它都是 HTML 编码的。例如: @"Hello World" 实际上会将页面输出为: <p>Hello World &
我是一名优秀的程序员,十分优秀!