如果熟悉經典ASP,即使函數不相同,那麼你也會很熟悉ASP.NET中的數據綁定語法。數據綁定的表達式是ASPX文件中<%# and %>中間的代碼。它允許將數據綁定到控制器,同時也允許綁定屬性、表達式和頁面上方法調用的結果綁定到控制器。雖然這一特征很容易使用,但是有時在確定什麼內容被允許綁定和是否它已經被使用的時候又造成一定的混亂。
數據綁定要素
當頁面的ASP.NET中DataBind方法被調用的時候,數據綁定表達式與ASP.NET中的屬性、服務器控制屬性和數據源進行鏈接。在打開服務器控制的標簽或頁面上任何地方的時候,可以將表達式放在屬性值/數值對的數值這一邊。所有的數據綁定表達式,不管放在什麼地方,都包含在<%# and %>字符中。
使用數據控制器的時候(Repeater, DataGrid等等),表達式的參數一般是數據源的列名。無論如何,只要它返回一個值,任何有效的表達式都是可以使用的。同樣,相同的語法也可用於外部列表控制。這包括在頁面上顯示值或組裝控制器屬性。
Container.DataItem是DataItem針對某一特定細目在運行時的別名。它從數據源映射一個單獨的細目,例如從數據查詢中得到一行或從一個向量中得到一個單獨的元素等。DataItem的實際數據類型由數據源確定。因此,當處理一個整型向量時,DataItem也是整型的。
下面的列表回顧了一些VB.NET的語法情況:
<%# Container.DataItem %>--返回字符串向量
<%# Container.DataItem("expression") %>--返回DataView 容器中的某一特定字段
<%# Container.DataItem.PropertyName %>--返回數據源中特定字符串的屬性值
<%# CStr(Container.DataItem.PropertyName) %>--返回屬性值並轉化成字符串形式
使用C#時,語法稍微有些不同。下面的列表包含了與上面列表相應的C#代碼。注意,基本的語法是一致的,但是在返回屬性值和數據類型的轉換時有變化。
<%# Container.DataItem %>
<%# ((DataRowView)Container.DataItem)["PropertyName"] %>
<%# ((ObjectType)Container.DataItem).PropertyName %>
<%# ((ObjectType)Container.DataItem).PropertyName.ToString() %>
當對頁面的屬性和方法進行作用時,語法是相容的。只要是返回字符串值,語法則完全相同。下面的列表給出了示例:
<%# propertyName %>--返回頁面水平屬性值
<asp:ListBox id="lstValues" datasource='<%# propertyName %>' runat="server">--返回與數據控制器綁定的頁面水平屬性值(向量、對象集等)
<%# (objectName.PropertyName) %>--顯示頁面水平對象屬性值
<%# MethodName() %>--顯示頁面方法返回的值
使用下面的語法可以使用頁面上的單個值(屬性和方法返回的值等等)
<%= Value %>