簡體   English   中英

ASP .NET MVC 3中<%:和<%=之間有什么區別

[英]What are the difference between <%: and <%= in ASP .NET MVC 3

我只是想知道,我所知道的唯一區別是<%=符號會生成您計划顯示的字符串中包含的所有可能的html標簽,而<%:僅顯示字符串的確切外觀。 如果有人可以幫助我,我將不勝感激。

兩個內聯代碼標簽在本質上是相同的,唯一的區別是<%:%>將自動使用編碼。 所以這:

<%: myText %>

等效於此:

<%= Html.Encode(myText) %>

建議使用前者。

Scott Gu的很好解釋-ASP.NET 4(和ASP.NET MVC 2)中HTML編碼輸出的新<%:%>語法

摘抄:

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內容進行顯式編碼。 相反,您可以編寫下面更簡潔的代碼來完成完全相同的操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM