ASP.NET后期绑定的时间

后期绑定在ASP.NET的数据处理中经常使用,也有不少文章讨论各种绑定方法的优劣。 讨论的最多的话题是速度问题,常见的观点是DataBinder.Eval(Container.DataItem, "id")的处理比较慢,相对来说,((DataRowView)Container.DataItem)["id"]就要好很多。这一点ASP.NET的qucik start里也提到。

但是速度不是唯一的问题,绑定的时间次序也很重要,看下面的例子:

< asp:Repeater id=CategoryList Runat="server" >
  < ITEMTEMPLATE >
   < P class=Category >
    < %# ((DataRowView)Container.DataItem)["title"] % >
    < App:BoardList id=Board Runat="server" Category='< %# DataBinder.Eval(Container.DataItem, "id") % >' />
   < /P >
  < /ITEMTEMPLATE >
< /asp:Repeater >

这里Repeater里调用了另外一个User Control,由于((DataRowView)Container.DataItem)方法的绑定时间比较早,在把参数传递给另一个User Control的时候,这种方法就行不通了,你会得到一个引用的对象不存在的错误。而必需用第二种方法绑定,虽然比较慢(绑定的时间较晚,对象已经生成了),程序就可以正常运行了。

大家有兴趣可以尝试看看。其实上面的这个例子是一个最简单的嵌套Repeater类Control的方法,效率不是最高,但非常简单实用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值