ASP.NET中的Eval和DataBinder.Eval方法

2013 年 8 月 12 日3950

【赛迪网讯】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)。绑定到任意的用户代码是被禁止的。

(实习编辑:HJ)

0 0