ASP .NET MVC 3中的<%:和<%=之间有什么区别?

时间:2013-09-20 09:43:12

标签: asp.net asp.net-mvc

我只是想知道,我知道的唯一区别是<%=符号会生成任何可能的html标记,这些标记包含在您计划显示的字符串中,而<%:只显示字符串的完整外观。如果有人能帮助我,我会非常感激。

4 个答案:

答案 0 :(得分:2)

两个内联代码标签基本相同,唯一的区别是<%:%>将自动使用编码。所以这个:

<%: myText %>

相当于:

<%= Html.Encode(myText) %>

建议使用前者。

答案 1 :(得分:2)

来自Scott Gu - New <%: %> Syntax for HTML Encoding Output in ASP.NET 4 (and ASP.NET MVC 2)

的非常好的解释

摘录:

ASP.NET应用程序(尤其是那些使用ASP.NET MVC的应用程序)通常依赖于使用&lt;%=%&gt;用于呈现输出的code-nugget表达式。今天的开发人员经常在这些表达式中使用Server.HtmlEncode()或HttpUtility.Encode()辅助方法,在输出呈现之前对输出进行HTML编码。这可以使用如下代码完成:

<div>
  <%= Server.HtmlEncode(Model.Content) %>
</div>

虽然这种方法很好,但它有两个缺点:

有点冗长 开发人员经常忘记调用Server.HtmlEncode方法 - 并且没有简单的方法来验证其在应用程序中的使用情况

新&lt;%:%&gt;代码块语法

在ASP.NET 4中,我们引入了一种新的代码表达式语法(&lt;%:%&gt;),它呈现类似于&lt;%=%&gt;的输出。块做 - 但在这之前也会自动对HTML进行编码。这消除了像我们在上面的例子中那样明确地对HTML编码内容的需要。相反,您可以在下面编写更简洁的代码来完成完全相同的事情:

<div>
  <%: Model.Content %>
</div>

答案 2 :(得分:0)

<%:是HtmlEncoded。 Code Nuggets for asp.net

在ASP.NET 4中,我们引入了一种新的代码表达式语法(<%: %>),其呈现类似于&lt;%=%&gt;的输出。块做 - 但在这之前也会自动对HTML进行编码。

答案 3 :(得分:0)

来自Scott Gu博客:

  

使用ASP.NET 4,我们引入了一种新的代码表达式语法(&lt;%:   %&gt;)呈现类似&lt;%=%&gt;的输出块做 - 但也是   在执行此操作之前自动对HTML进行编码。这消除了   需要像我们在示例中那样显式地对HTML进行编码   以上。相反,您可以在下面编写更简洁的代码   完成同样的事情:

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