gpt4 book ai didi

c# - MvcHtmlString 和 HtmlString 似乎对简单字符串的包装毫无用处?

转载 作者:太空狗 更新时间:2023-10-30 00:19:36 26 4
gpt4 key购买 nike

我正在查看 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() 方法返回的字符串。这样一来,我们就不必再考虑是应该使用旧语法还是新语法了。

现在有人会问为什么会有HtmlStringMvcHtmlString 类。答案是 Razor 。 Razor 语法:

@...

默认情况下也对所有内容进行编码。现在 Razor 是在 ASP.NET MVC 2.0 中引入的,它能够在 .Net Framework 3.5 上工作并且那里没有 IHtmlStringHtmlString - MvcHtmlString 是 Razor 的标记类,现在保留它只是为了向后兼容。

关于c# - MvcHtmlString 和 HtmlString 似乎对简单字符串的包装毫无用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18632256/

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