剛走開始與MVC 2我注意到在他們的首發模板,他們使用是<%:和<%=爲embbed代碼(表達)塊一樣的東西
<%: Html.ActionLink("Home", "Index", "Home")%>
,我在MVC確信1它是
<%= Html.ActionLink("Home", "Index", "Home")%>
他們是同一件事嗎?如果是這樣,爲什麼從等號改爲冒號。
剛走開始與MVC 2我注意到在他們的首發模板,他們使用是<%:和<%=爲embbed代碼(表達)塊一樣的東西
<%: Html.ActionLink("Home", "Index", "Home")%>
,我在MVC確信1它是
<%= Html.ActionLink("Home", "Index", "Home")%>
他們是同一件事嗎?如果是這樣,爲什麼從等號改爲冒號。
冒號語法意味着你將自動HTML編碼:http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx
他們不能只是HTML編碼所有現有<%=
塊,因爲事情已經正確編碼(這是最有希望的項目了那裏)看起來很奇怪。
ASP .NET 4引入了<%:在將其輸出到屏幕之前編碼輸出的語法。 ASP MVC已經對此進行了編碼,但是爲了更加明確,他們開始使用語法來清楚地表明,只要你看到<%:你可以確定輸出將被正確編碼。
你在這裏丟失的關鍵詞是「HTML」,如「HTML編碼」 - 而不僅僅是「編碼」。 – 2010-04-20 15:39:47
我很確定在.net 4之前引入了<%:語法。 – Losbear 2013-01-26 02:04:33
它是.net 4:http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt -syntax換HTML編碼 - 輸出 - 在-ASP-淨-4-和-ASP淨MVC-2.aspx – 2013-01-26 21:48:12
<%=
用於寫入輸出緩衝區。
<%:
用於在HTML編碼內容後寫入輸出緩衝區......除非在返回的對象上實現了IHtmlString
接口。
斯科特·格思裏有關於這一主題的優秀帖子: 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
如果輸出已經逃脫,雙編碼可以通過返回的對象上執行IHtmlString
接口來防止。 http://msdn.microsoft.com/en-us/library/system.web.ihtmlstring.aspx
+1爲您鏈接的偉大閱讀。 – 2010-04-20 15:14:29
謝謝@bears。 phil的博客是一個必讀 - 尤其是如果你正在使用ASP.NET MVC – 2010-04-20 15:31:21
我喜歡冒號相等的引用,但從側面看:-) – 2010-04-20 15:50:01