如果你熟悉經典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 %>--傳回頁面水平屬性值
<%# (objectName.PropertyName) %>--顯示頁面水平物件屬性值
<%# MethodName() %>--顯示頁面方法傳回的值
使用下面的語法可以使用頁面上的單一值(屬性和方法傳回的值等等)
<%= Value %>
Listing A中C#程式碼說明了在ASP.NET Web表格中的資料綁定。它從SQL Sever Northwind Employees表中挑選出了員工的名字和電話號碼。查詢值透過ASP.NET Repeater控制器顯示。列值透過資料綁定插入。表格的窗體標題透過方法呼叫組裝。另外,Dataitem的ItemIndex性質用來顯示行數。 ItemIndex性質從0開始,在其顯示之間會加1。
Listing B包含了等同的VB.NET程式碼。主要的不同之處在於VB.NET中使用圓括號而C#中使用方括號。而且行的投射在VB.NET中是不必要的。
使用Contain.DataItem有些沉悶,因為隨時要注意資料類型和資料類型的轉換。微軟提供了DataBinder類,它可以進一步簡化開發。
使用DataBinder
微軟文件(MSDN)中詳細解釋了DataBinder類別。此方法可以讓RAD設計器輕易的產生解析資料綁定語法。此方法也可以用於Web窗體頁面的宣告簡化從一種到另一類型的對應。
在ASP.NET頁面中使用資料值時,可以使用DataBinder 類別的Eval方法讓.NET完成這個繁重的工作。 Eval方法接受先前被覆寫的Container.DataItem物件;它計算出表達式中每一確定欄位的詳細資料並且將他們顯示出來。其語法如下:
DataBinder.Eval(Container.DataItem, "field name", "optional formatting")
採用此語法,可使用DataBinder.Eval重寫第一個範例,其C#程式碼請參閱Listing C。 Listing D包含VB.NET等同程式碼。
DataBinder.Eval在將工作推向系統方面的能力是很強的,同時也要注意系統定位元素和確定物件/資料類型的時間和資源的開銷很大。
豐富的選項
資料綁定使得向ASP.NET頁面放入資料的工作變得相對簡單。有許多不同資料綁定選項可供選擇,他們包括:綁定資料到控制器並且確定如何顯示,或在ASP.NET頁面上選擇聲明的資料綁定到控制器。最後,它由你的喜好決定,但有很多選擇終究是件好事。
Tony Patton作為軟體開發人員開始了其職業生涯,他已經通過了Java、VB、Lotus和XML認證。