- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在查看 MvcHtmlString
及其基类 HtmlString
的源代码,它们似乎都是字符串的无用包装器。
我记得有一次我做过这个练习并看到了好处,但现在想不起来了。当时我花了很多时间研究 MvcHtmlString
,我学到的一件事是它的(显然是静态的)工厂方法 Create
因引入无参数而变得多余MvcHtmlString
类上的构造函数。
但我似乎不记得或找不到关于这些类在普通字符串之上添加了什么服务的分析或注释。
那么这些类有什么用呢?
最佳答案
它们的主要目的是实现 ASP.NET 4.0 中引入的 IHtmlString
标记接口(interface)。
这是 ASP.NET 4.0+ 自动编码功能的一部分。在 ASP.NET 4.0 之前,我们只有以下语法可用:
<%= … %>
这只是将字符串注入(inject)到生成的 HTML 中。在 4.0 中添加了以下语法:
<%: … %>
这是我们现在都应该使用的语法。与旧语法的不同之处在于,字符串将由框架编码为 HTML。
但在某些情况下,我们不想对字符串进行编码,因为它已经是正确编码的 HTML(例如,它是 HtmlHelper
的输出)。在这种情况下,我们应该返回一个实现了 IHtmlString
的类。新语法将很乐意接受这个而不是字符串,并且不会尝试对其进行编码,它只会输出接口(interface)的 .ToHtmlString()
方法返回的字符串。这样一来,我们就不必再考虑是应该使用旧语法还是新语法了。
现在有人会问为什么会有HtmlString
和MvcHtmlString
类。答案是 Razor 。 Razor 语法:
@...
默认情况下也对所有内容进行编码。现在 Razor 是在 ASP.NET MVC 2.0 中引入的,它能够在 .Net Framework 3.5 上工作并且那里没有 IHtmlString
或 HtmlString
- MvcHtmlString
是 Razor 的标记类,现在保留它只是为了向后兼容。
关于c# - MvcHtmlString 和 HtmlString 似乎对简单字符串的包装毫无用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18632256/
我是一名优秀的程序员,十分优秀!