当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET 2.0教程:Bind标签和Eval标签

ASP.NET
一个无刷新效果定时自动更新页面的例子
ASP.NET2.0的控件状态和视图状态探讨
用好ASP.NET 2.0的URL映射
详解:如何在.NET中访问MySQL数据库?
如何实现Asp与Asp.Net共享Session
利用.net的强大功能发送email
.NET中加密与解密QueryString的方法
Asp.net生成htm静态文件的两种途径
C#定时器的使用
从XML文件中读取数据绑定到DropDownList
ASP.NET 2.0 里输出文本格式流
用.net动态创建类的实例
.Net下的MSMQ的同步异步调用
ASP.NET 2.0实现防止同一用户同时登陆
asp.NET自定义服务器控件内部细节
组合.NET数据控件构建强大用户接口
用ASP.NET 2.0 FormView控件控制显示
菜鸟也学习ASP.NET如何读取数据库内容
教你简单方便获取Web设计的免费资源
专家详解:复杂表达式的执行步骤

ASP.NET 2.0教程:Bind标签和Eval标签


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 47 ::
收藏到网摘: n/a

在ASP.NET 2.0中新引入的Bind和Eval标签简化了1.1中的DataBinder.Eval()的写法. 多数情况下你不会注意到新增的这两个TAG有什么大的区别, 不过或许你会发现VS编辑器在设计界面下生成的代码默认是使用Bind, 这里主要可能有两个原因:

  1. Eval在后端使用反射来绑定数据, 因此速度比较慢
  2. Eval通常是用于只读的数据展示, Bind则支持与xxxDataSource这类控件的直接集成

也许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