我只是想知道,我知道的唯一区别是 <%= 符号会生成任何可能的 html 标签,这些标签包含在您计划显示的字符串中,而 <%: 只显示字符串的外观。如果有人可以帮助我,我将不胜感激。
4 回答
这两个内联代码标签本质上是相同的,唯一的区别是 <%: %> 将自动使用编码。所以这:
<%: myText %>
相当于:
<%= Html.Encode(myText) %>
推荐前者。
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>
<%:
是 HtmlEncoded。 asp.net 的代码块
在 ASP.NET 4 中,我们引入了一种新的代码表达式语法(<%: %>)
,它可以像 <%= %> 块一样呈现输出——但它也会在这样做之前自动对其进行 HTML 编码。
来自 Scott Gu 博客:
在 ASP.NET 4 中,我们引入了一种新的代码表达式语法 (<%: %>),它可以像 <%= %> 块一样呈现输出——但它也会在这样做之前自动对其进行 HTML 编码。这消除了像我们在上面的示例中所做的那样显式地对内容进行 HTML 编码的需要。相反,您可以在下面编写更简洁的代码来完成完全相同的事情: