【问题标题】:Are <%: and <%= the same thing as embbed code (expression) blocks<%: 和 <%= 是否与嵌入代码(表达式)块相同
【发布时间】:2010-04-20 15:10:27
【问题描述】:

刚开始使用 MVC 2,我注意到他们在他们的入门模板中使用

<%: Html.ActionLink("Home", "Index", "Home")%>

我确信在 MVC 1 中是这样的

<%= Html.ActionLink("Home", "Index", "Home")%>

它们是一样的吗?如果是这样,为什么从等号更改为冒号。

【问题讨论】:

    标签: asp.net-mvc-2


    【解决方案1】:

    冒号语法意味着您将自动进行 html 编码:http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx

    他们不能只对所有现有的 &lt;%= 块进行 html 编码,因为已经正确编码的东西(希望大多数项目都这样)看起来很奇怪。

    【讨论】:

    • 谢谢@bears。 phil 的博客是必读的 - 特别是如果你正在使用 ASP.NET MVC
    • 我喜欢对冒号的引用,但从侧面看:-)
    【解决方案2】:

    &lt;%= 用于写入输出缓冲区。

    &lt;%: 用于在对内容进行 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

    【讨论】:

      【解决方案3】:

      ASP .NET 4 引入了

      【讨论】:

      猜你喜欢
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多