Eval( " ")和Bind( " ") 這兩種一個單向綁定,一個雙向綁定
bind是雙向綁定,但需數據源可更改才能用
ASP.NET 2.0改善了模板中的數據綁定操作,把v1.x中的數據綁定語法DataBinder.Eval(Container.DataItem, fieldname)簡化為Eval(fIEldname)。Eval方法與DataBinder.Eval一樣可以接受一個可選的格式化字符串參數。縮短的Eval語法與DataBinder.Eval的不同點在於,Eval會根據最近的容器對象(例如DataListItem)的DataItem屬性來自動地解析字段,而DataBinder.Eval需要使用參數來指定容器。由於這個原因,Eval只能在數據綁定控件的模板中使用,而不能用於Page(頁面)層。當然,ASP.Net 2.0頁面中仍然支持DataBinder.Eval,你可以在不支持簡化的Eval語法的環境中使用它。
下面的例子演示了如何使用新的簡化的Eval數據綁定語法綁定到DataList數據項模板(ItemTemplate)中的Image、Label和HyperLink控件。
<ASP:DataList ID= "DataList1 " RepeatColumns= "5 " Width= "600 " runat= "server " DataSourceID= "ObjectDataSource1 ">
<ItemTemplate>
<asp:HyperLink ID= "HyperLink1 " runat= "server " NavigateUrl= '<%# Eval( "PhotoID ", "PhotoFormVIEwPlain.ASPx?ID={0} ") %> '>
<asp:Image ID= "Image1 " Runat= "server " ImageUrl= '<%# Eval( "FileName ", "images/thumbs/{0} ") %> ' /></ASP:HyperLink>
<ASP:Label ID= "CaptionLabel " runat= "server " Text= '<%# Eval( "Caption ") %> ' />
</ItemTemplate>
</ASP:DataList><br />
<ASP:ObjectDataSource ID= "ObjectDataSource1 " runat= "server " TypeName= "DataComponentTableAdapters.PhotosTableAdapter " SelectMethod= "GetPhotosForAlbum ">
數據綁定也可以作為控件的主題定義(theme definition)的一部分,這樣我們就可以通過改變主題來隨意地改變模板化控件的布局和外觀。但是Theme(主題)模板中只能使用Eval(或者後面討論的Bind)。綁定到任意的用戶代碼是被禁止的。