“<%:”中的“:”是什么意思?与“<%=”有什么区别?(涉及IT技术)

8
在ASP.NET MVC 2中,<%:标签被引入来代替Html helpers中的<%=。但是这意味着什么,与之前的有什么区别?我应该在何时使用<%=<%:
谢谢。
3个回答

13
在ASP.NET 4中,<%: xyz %>语法执行的操作与之前版本中的<%= Server.HtmlEncode(xyz) %>相同。它只是一个快捷方式,因为它经常被使用。
正如Richard在下面所说的,它还可以根据字符串是否实现了IHtmlString接口来确定是否需要编码。

2
如果表达式的类型实现了 IHtmlString 接口,它还提供了避免 HTML 编码的功能 -- 因此,执行自己编码的类型不需要特殊处理。 - Richard

8
据我所知,<%:会自动提供HTML编码,因此您不需要自己编码。
来自Scott Guthrie的博客文章
引用:

在ASP.NET 4中,我们引入了一种新的代码表达式语法(<%: %>),它像<%= %>块一样呈现输出,但在执行之前还会自动进行HTML编码。

阅读博客文章以获取更多详细信息。

3

<%= 直接插入值,而 <%: 则自动为您转义所有特殊字符。

换句话说,

<%: myString %>

<%= Server.HtmlEncode(myString) %>

相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接