ASP.NET 2.0教程:Bind標簽和Eval標簽
在ASP.NET 2.0中新引入的Bind標簽和Eval標簽簡化了1.1中的DataBinder.Eval()的寫法. 多數情況下你不會注意到新增的這兩個TAG有什么大的區別, 不過或許你會發現VS編輯器在設計界面下生成的代碼默認是使用Bind, 這里主要可能有兩個原因。
Eval標簽在后端使用反射來綁定數據, 因此速度比較慢
Eval標簽通常是用于只讀的數據展示, Bind則支持與xxxDataSource這類控件的直接集成
也許Bind標簽正是基于這種考慮, (自動綁定Update之類的方法), 類似下面這樣的做法將不會像我們所想的那樣工作:
- 1: Text='〈%# Bind("ApplicationName")
- + "-" + Bind("WorkItemId") %〉'
***顯示的結果是Bind(”WorkItemId”)的結果, 之前的結果包括連接字符串全部都被省略掉了. 可以想象由于Bind試圖要自動更新回數據庫(即便你沒有這么做), 如果用于多個字段的綁定其自動更新機制可能會無法判斷. 因此這種情況下你就可以使用Eval來代替了. 當然, 如果要追求***的性能, 就應該使用顯式的類型轉換, 如下:
- 1: Text='〈%# ((System.Data.DataRowView)
- Container.DataItem)["ApplicationName"]
- 2: + "-" + ((System.Data.DataRowView)
- Container.DataItem)["WorkItemId"] %〉'
注:上述例子假設數據源為弱類型的DataSet。
【編輯推薦】