2008-09-22 69 views
24

我一直在使用ASP.NET多年,但我永遠不會記得使用#和=時是否合適。什麼時候應該在ASP.NET控件中使用#和=?

例如:

<%= Grid.ClientID %> 

<%# Eval("FullName")%> 

有人能解釋時,每個人都應該使用這樣我就可以把它直接在我的腦海? #僅用於支持數據綁定的控件嗎?

+0

相關(?重複):在ASP.NET中,哪些是.aspx中內聯代碼的不同方式嗎?](http://stackoverflow.com/questions/28219)。 – 2011-03-30 09:56:21

+0

我沒有檢查這個背後的理論,但是<%#似乎在BEFORE <%=之前進行了評估,所以即使訪問變量可能存在並且在生命週期中被設置,它也可能返回null。我剛剛失去了一些時間來解決這個問題(在我的情況下非常棘手的情況),所以我認爲分享它可能是有用的。 – AFract 2014-09-25 12:39:16

回答

24

<%=%>與無論放置在何處的Response.Write(「」)等價。

<%#%>是數據綁定,只能用在支持數據綁定(你可以,如果你在你的代碼隱藏調用的Page.DataBind()使用這些頁面級控制外)

Databinding Expressions Overview

7

這是一個great blog post by Dan Crevier,他走過他寫的一個測試應用程序來顯示差異。

本質:

  • 的<%=表達式在渲染時評價
  • 的<%#表達式在的DataBind()時計算的,而不是評估在所有如果的DataBind()不是調用。
  • <%#表達式可以用作服務器端控件的屬性。 <%=表達式不能。
+0

「<%=表達式不能。」因爲<%= %>是Response.Write的快捷方式,在* _之後發生_ *頁面呈現並且響應正在流回瀏覽。 – AMissico 2009-12-24 18:01:31

41

有幾個不同的 '蜂蜇傷':

  • <%@ - 頁面指令
  • <%$ - 資源訪問
  • <%= - 明確輸出到
  • <%# - 數據綁定
  • <%-- - 服務器端註釋塊

而且新在ASP.Net 4:

  • <%: - 寫出的網頁,但與HTML編碼
相關問題