0

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

4

4 回答 4

2

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

<%: myText %>

相当于:

<%= Html.Encode(myText) %>

推荐前者。

于 2013-09-20T09:52:11.183 回答
2

Scott Gu的很好的解释- New <%: %> Syntax for HTML Encoding Output in ASP.NET 4 (and ASP.NET MVC 2)

摘抄:

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

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

虽然这很好用,但它有两个缺点:

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

新的 <%: %> 代码块语法

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

<div>
  <%: Model.Content %>
</div>
于 2013-09-20T09:54:38.343 回答
0

<%:是 HtmlEncoded。 asp.net 的代码块

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

于 2013-09-20T09:51:49.460 回答
0

来自 Scott Gu 博客:

在 ASP.NET 4 中,我们引入了一种新的代码表达式语法 (<%: %>),它可以像 <%= %> 块一样呈现输出——但它也会在这样做之前自动对其进行 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

于 2013-09-20T11:54:44.187 回答