ASP .Net Binding 方式

ASP .Net Binding 方式

前言

今天看了ASP .Net的WebForm教學(Display Data Items and Details,裏面說了,最常見的ASP .Net Binding有:

  1. Data Source Control
  2. Coding by hand
  3. Model Binding

1. Data Source Control

其實就是最近學習的SqlDataSource類型。它能夠使用SELECT、INSERT、UPDATE和Delete的四種SQL來取得對應資料。

而我們可以使用ASP .Net控制項來Data Bind到SqlDataSource,而那四個SQL方法則可以用來達到選取、增加、更新和刪除。

總共三種Binding模式:

  1. 完全寫死到.aspx裏面的代碼:不需要寫任何代碼即可完成。最不好有變化
  2. 部份寫死到.aspx裏面的代碼:SQL的四種Query可以帶參數進去
  3. 完全由代碼來寫:使用late binding

1.1 寫死到.aspx

這一部份沒有什麽好講的,只要把SqlDataSource使用Gui設定好,然後拉一個Control(例如GridView),把Binding設上去,就完成了。

1.2 部份寫死

這裡有兩個部份,一個是使用Gui然後抓取其他Control或是像QueryString的內容當做參數傳進去,或者是在cs檔案裏面自己加入。

舉例來說:我的SqldataSource的Select Query是:

SELECT * FROM Supplier WHERE SupplierId = @SupplierId

如果使用Gui來做,在SqldataSource設定精靈裏面,把WHERE的參數數值指向對應的物件:

10521128

如果寫在代碼裏面,則是使用:

SqlDataSource1.SelectParameters["supplierId"].DefaultValue = txtBox1.text;

使用DefaultValue這一個Property,把想要的參數傳進去。

1.3 全由代碼來寫

如果全部由代碼來寫,則Binding變成是Late Binding,因為是到了Runtime才Bind上去的。

基本上,如果要和以上內容一樣,則需要做:

SqlDataSource.SelectCommand = "SELECT * FROM Supplier WHERE SupplierId = @SupplierId"; 
SqlDataSource1.SelectParameters.Add("supplierId", "TypeCode.string", txtBox1.Text);
GridView1.DataSourceId = SqlDataSource.Id; 

因為一切沒有定義,所以代碼裏面都要有寫到。

2 Coding by hand

這一個我有點不確定意思,不過我猜測應該是像如果你使用ADO .Net或是像Web Service,當資料傳過來時,需要處理然後才Bind到Control上面。

3 Model Binding

它Binding是Method而這Method要傳回來IEnumerable 類型Type(詳細可以看MSDN

那篇文章使用的是這一種方式,因為它搭配Entity Framework做起來很順暢。

要是用這一種Binding需要做到三件事情:

  1. 把Control的屬性SelectMethod設置為Method的名字,例如:
    < asp:ListView SelectMethod="GetProducts"> 
  2. 把ItemType設置為哪一個Method所會傳回來的Model Type,例如:
    《asp:ListView ItemType="WingtipToys.Models.Product"》 
  3. 最後,應為ItemType設置好了,那麼就可以把旗下的Node裏面使用「Item.(PropertyName)」,例如:
    < ItemTemplate><%#:Item.ProductName>《/ItemTemplate》
    WingtipToys.Models.Product 有一個Property叫做 ProductName,因此使用這種方式就Bind得到。

使用這種Binding的好處是一個Method可以被Binding到不同的地方。

結語

這幾種是比較常用的Binding 模式,瞭解一些看代碼才不會看不懂。而不管寫入到.aspx還是cs裏面,都要能夠大概瞭解在做什麽。

25-Oct-2012(Thu): 21:35 (Taichung, Taiwan)


Google+

創用 CC 授權條款
Alan Tsai 的隨手筆記Alan Tsai製作,以創用CC 姓名標示 4.0 國際 授權條款釋出。