【发布时间】:2010-04-20 15:10:27
【问题描述】:
刚开始使用 MVC 2,我注意到他们在他们的入门模板中使用
<%: Html.ActionLink("Home", "Index", "Home")%>
我确信在 MVC 1 中是这样的
<%= Html.ActionLink("Home", "Index", "Home")%>
它们是一样的吗?如果是这样,为什么从等号更改为冒号。
【问题讨论】:
标签: asp.net-mvc-2
刚开始使用 MVC 2,我注意到他们在他们的入门模板中使用
<%: Html.ActionLink("Home", "Index", "Home")%>
我确信在 MVC 1 中是这样的
<%= Html.ActionLink("Home", "Index", "Home")%>
它们是一样的吗?如果是这样,为什么从等号更改为冒号。
【问题讨论】:
标签: asp.net-mvc-2
冒号语法意味着您将自动进行 html 编码:http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx
他们不能只对所有现有的 <%= 块进行 html 编码,因为已经正确编码的东西(希望大多数项目都这样)看起来很奇怪。
【讨论】:
<%= 用于写入输出缓冲区。
<%: 用于在对内容进行 HTML 编码后写入输出缓冲区...除非在返回的对象上实现了 IHtmlString 接口。
Scott Guthrie 有一篇关于这个主题的优秀帖子: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx
如果输出已经被转义,可以通过在返回的对象上实现IHtmlString 接口来防止双重编码。 http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx
【讨论】:
ASP .NET 4 引入了
【讨论】: