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