ASP.NET中控件应用的思考

来源:互联网 发布:淘宝管控记录异常订单 编辑:程序博客网 时间:2024/04/30 13:12

页面其实就做两件事情,第一件事情就是显示数据,第二件事情就是收集需要处理的数据。
现在,假设有一个容器,能给页面提供显示所需要的数据,也可以收集页面的数据,则整个页面只需要与该容器打交到就可以了。
后台页面甚至不需要一行代码。
这只是理想状态,这种理想状态可以实现吗?别的不说,就说显示数据,至少需要this.txtName.Text="abc";这样的代码吧,总不成在页面上用<%%>吧?有这样合适的容器吗?当提交页面的时候,没有后台代码,怎么知道要调用商业逻辑层的那个函数?

第一:这样的容器是有的,就是HttpContext(上下文),里面有一个Items,可以存储数据。
第二:不管是显示还是收集数据的时候,都不需要this.txtName.Text="abc";或<%%>这样的代码,我们可以扩展.net提供的控件。
拿TextBox来说,需要如何扩展呢?首先这个控件在页面载入的时候,判断HttpContext中有没有适合它的数据,如果有,则显示这些数据。
其次:用户提交页面的时候,这个控件自动将值写入HttpContext中。
那么,如何知道某个控件要显示什么值呢?现在来看,还无法知道,所以需要提供一个属性,ItemKey。这个属性的含义是HttpContext的Items项的键值,也就是说这个控件对应HttpContext中的值为HttpContext.Items[ItemKey]。
这样,只要我们在页面载入的时候,将数据写入HttpContext中,控件就可以自动显示相应的值。
在页面提交的时候,该控件也会自动将数据写入到HttpContext中。