ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldname)。Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩短的Eval语法与DataBinder.Eval的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段,而DataBinder.Eval需要使用参数来指定容器。ASP.NET 2.0页面中仍然支持DataBinder.Eval,你可以在不支持简化的Eval语法的环境中使用它。
span style="color: #ff0000">双向绑定和单向绑定的区别
Eval 函数用于定义单向(只读)绑定。
Bind 函数用于定义双向(可更新)绑定。
简单说就是Eval只能读数据,不能更新。Bind 既能读又能更新。 Bind 方法通常与输入控件一起使用,例如由编辑模式中的 GridView 行所呈现的 TextBox 控件。当数据绑定控件将这些输入控件作为自身呈现的一部分创建时,该方法便可提取输入值。
5.格式化绑定数据
最后一个参数和String.c的形式一样,下面三种表达方式相同,详见c#基础之字符串处理
<%#DataBinder.Eval(Container.DataItem,"字段名","{0:c}") %>
<%#Eval("字段名","{0:c}")%>
<%#((DataRowView)Container.DataItem)["字段名"] %>
<%#Eval("字段名","{0:c}")%>
<%#((DataRowView)Container.DataItem)["字段名"] %>
以下三种写法同等
<%#string.Format("{0:yyyy-MM-dd dddd}",Eval("stuBirth"))%>
<%# DataBinder.Eval(Container.DataItem,"stuBirth","{0:yyyy-MM-dd}")%>
<%#((DataRowView)Container.DataItem)["stuBirth"] %>
<%# DataBinder.Eval(Container.DataItem,"stuBirth","{0:yyyy-MM-dd}")%>
<%#((DataRowView)Container.DataItem)["stuBirth"] %>