2010-10-12 83 views

回答

5

区别在于<%:自动对HTML进行编码,而<%=没有。

在MVC2推出之前,为了对HTML字符串进行编码,您必须在视图中使用Html.Encode()方法。

<%= Html.Encode(Model.MyString) %> 

然而,随着MVC2他们加入<%:标签,其输出相同的事情,但处理HTML编码为您服务。

<%: Model.MyString %> 

作为一个经验法则,你应该使用<%总是输出你的字符串:标签,除非你有一个很好的理由不这样做。

结账Scott Gu's blog了解更多信息。

在ASP.NET 4中,我们引入了一个新 代码表达式语法(<%:%>) 呈现像<%=%>块输出 做 - 但也自动HTML 之前对其进行编码这样做。这 无需显式HTML编码 内容...

3

从本质上讲,<%:标签编码尚未被编码的任何字符串。所以:

<%: Model.Title %> 

...是一样的:

<%= Server.HtmlEncode(Model.Title) %> 

但是如果你不小心使用标签的地方是没有必要的:

<%: Html.TextBoxFor(Model => Model.Title) %> 

...这将与以前一样:

<%= Html.TextBoxFor(Model => Model.Title) %> 

请参阅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的完整说明。