MvcHtmlStringdocumentation并不是很令人启发:



我不清楚这到底意味着什么。似乎有些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/

10-11 20:44