深入ASP.NET数据绑定(上)
了DataBinder.Eval静态方法来得到绑定表达式(字段名)的值,它的数据是通过 this.Page.GetDataItem()这样的一个方法得到的。那么为什么this.Page.GetDataItem()就可以得到当前 正在被绑定的数据项呢?原来,在页面绑定数据时,它会有一个堆栈来保存它所有的绑定控件绑定时用到 的数据项,我们只需要取得堆栈顶部的那个元素,就可以在页面的作用域内的任何一个位置得到当前正在 被绑定的数据项。如上的例子,我们就可以取得当前绑定的RepeaterItem的DataItem的数据项,因此我们 不需要与RepeaterItem有任何的联系。
如果硬要用上面的代码来描述数据绑定的全过程,跨度过大。但是有了以上的分析,我们再用文字的 形式再来总结下,应该就会一个比较完整的印象了:在ASP.NET的数据模板控件中,可以使用<%# % >这样的语法来将字段值作为一个占位符,用在HTML代码中,可以方便我们设计和生成最终的HTML代码 ,不需要很多的字符拼接工作。而ASP.NET运行时在首次执行页面时,会为页面编译一个动态类,在这个 动态类中会实例化所有的服务器端控件,编译和解析绑据模板控件的绑定语法,并用一些对象和操作来完 成数据绑定的字符串接拼接行为。因此绑定语法的解析事实上是编译时的行为,只不过这个编译时是延迟 到页面的首次执行时。这就可以解释为什么在我们想在动态添加模板中使用<%# %>这样的绑定语法 时,无法解析的原因。 而对于DataBinder.Eval方法,这是ASP.NET提供的一个数据绑定辅助方法。通过这个方法,我们可以 方便的从种不同的数据项,如自定义对象或DataRow取出对象的字段(属性值)。从而为我们屏蔽很多不 必要的数据来源类型的判断。同时DataBinder这个类还提供了其它的绑定辅助方法,大家可以从MSDN查看 更多有用的帮助。 对数据绑定语法的分析,就先到此为一个段落。在上面,我们主要讨论了Eval的单向数据绑定,在接 下来的一篇文章中我们会来探讨ASP.NET通过Bind函数(关键字) 来实现数据双向绑定的机理。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |