2010-11-17 75 views

回答

8

粗略地講,<%=term%>轉化爲Resonse.Write(term)<%:term%>轉化爲Response.Write(Html.Encode(term))

6

<%:做一個HTML編碼,而<%=沒有。

+0

一個重要的注意事項是<%:不會重新編碼實現IHtmlString的值(即MvcHtmlString) – 2010-11-17 14:29:33

+0

<%:只對文本沒有標記爲已編碼的編碼。因爲Html.ActionLink(blah blah blah)已經被編碼(因爲它返回一個IHtmlString),所以它不會重新編碼它。 – Rangoric 2010-11-17 14:29:34

+1

downvote似乎有點極端。 – RedFilter 2010-11-17 14:43:41

1

的<%:是與ASP.NET 4.0來了一個新的語法和效果,它會自動HtmlEncodes包含在標籤中的內容。

+0

它附帶ASP.NET 4.0 - 它也適用於webforms。 – Oded 2010-11-17 14:29:56

+0

這並非完全正確。 <%:附帶.NET 4.它在早期版本中不起作用。 – gligoran 2010-11-17 14:30:14

+0

我的錯誤,我已經適當地編輯了答案。 – 2010-11-17 14:33:41

2

<%: %>將試圖轉換無論是它之間放置在一個字符串的Html然後編碼它並把它輸出到響應流。但是,如果該對象實現IHtmlString,它不會對它進行編碼。

<%= %>會將其間的任何內容轉換爲字符串並將其輸出到響應流。