MvcHtmlString
的documentation并不是很令人启发:
我不清楚这到底意味着什么。似乎有些HTML帮助器方法返回了MvcHtmlString
,但是我在网上看到的一些自定义帮助器的示例仅返回了常规字符串。
问题:
什么是MvcHtmlString
?
我何时应该选择MvcHtmlString
而不是string
,反之亦然?为什么?
最佳答案
ASP.NET 4引入了新的代码块语法<%: %>
。本质上,<%: foo %>
转换为<%= HttpUtility.HtmlEncode(foo) %>
。该团队正在尝试让开发人员尽可能使用<%: %>
而不是<%= %>
来防止XSS。
但是,这带来了一个问题,如果代码块已经对其结果进行了编码,那么<%: %>
语法将对其进行重新编码。通过引入IHtmlString接口(interface)(.NET 4中的新增功能)可以解决此问题。如果<%: foo() %>
中的foo()返回IHtmlString,则<%: %>
语法不会对其进行重新编码。
MVC 2的助手返回MvcHtmlString,它在ASP.NET 4上实现接口(interface)IHtmlString。因此,当开发人员在ASP.NET 4中使用<%: Html.*() %>
时,结果将不会被双重编码。
编辑:
这种新语法的直接好处是您的 View 更加简洁。例如,您可以编写<%: ViewData["anything"] %>
而不是<%= Html.Encode(ViewData["anything"]) %>
。
关于c# - 什么是MvcHtmlString?何时应使用它?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2293357/