gpt4 book ai didi

c# - 什么是 MvcHtmlString 以及何时应该使用它?

转载 作者:IT王子 更新时间:2023-10-29 03:29:23 27 4
gpt4 key购买 nike

documentation对于 MvcHtmlString 并不是很有启发性:

Represents an HTML-encoded string that should not be encoded again.

我不清楚这到底意味着什么。似乎某些 HTML 帮助器方法返回一个 MvcHtmlString,但我在网上看到的几个自定义帮助器示例只返回一个常规字符串。

问题:

什么是MvcHtmlString

什么时候应该选择 MvcHtmlString 而不是 string ,反之亦然?为什么?

最佳答案

ASP.NET 4 引入了新的代码块语法 <%: %> .本质上,<%: foo %>转换为 <%= HttpUtility.HtmlEncode(foo) %> .该团队正在努力让开发人员使用 <%: %>而不是 <%= %>尽可能防止 XSS。

但是,这会引入一个问题,即如果代码块已经对其结果进行编码,则 <%: %>语法将重新编码它。这是通过引入 IHtmlString 接口(interface)(.NET 4 中的新接口(interface))解决的。如果 <%: foo() %> 中的 foo()返回一个 IHtmlString,<%: %>语法不会对其重新编码。

MVC 2 的助手返回 MvcHtmlString,它在 ASP.NET 4 上实现接口(interface) IHtmlString。因此,当开发人员使用 <%: Html.*() %>在 ASP.NET 4 中,结果不会被双重编码。

编辑:

这种新语法的直接好处是您的 View 更清晰一些。例如,您可以编写 <%: ViewData["anything"] %>而不是 <%= Html.Encode(ViewData["anything"]) %> .

关于c# - 什么是 MvcHtmlString 以及何时应该使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2293357/

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