在ASP.Net 2.0中新引入的Bind和Eval標簽簡化了1.1中的DataBinder.Eval()的寫法. 多數情況下你不會注意到新增的這兩個TAG有什麼大的區別, 不過或許你會發現VS編輯器在設計界面下生成的代碼默認是使用Bind, 這裡主要可能有兩個原因:
也許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