Q 我吧
posts - 37,  comments - 62,  trackbacks - 12
公告
虽然.net framework 2.0 已经是发布了,在使用asp.net 中也有了些改变。但是.net framework1.1 仍然是我现在主要使用的开发平台。在啊asp.net 1.1 中加入了用户自定义控件这个新的模型,可能不能说是模型,或者说是方式吧。个人觉得这个是取代在以前的asp中使用的 include 包含一个文件的方式。很多时候,将一些固定功能的代码做成控件,可以更好地实现重用,这个应该没有人有疑问吧?
但是在asp.net 1.1 做出来的用户控件可以在一种层次上实现重用,即在需要使用相同功能的地方,只需要将已做好的用户控件放在那里就可以。但这只是固定代码固定数据的重用。如果是需要固定代码动态数据的重用呢?在这里说明一下,我在这里的的固定代码,固定数据重用是什么意思。其实它的意思就是,将实现某一具体功能,获取具体某一固定数据的代码的重用,就像有一个用户登陆的用户控件,它在首页中实现的功能和使用的数据和在专门登陆的页面上实现的功能和使用的数据都是一致的。这也是我所说的用户控件的第一种层次的重用。其实这种方式的重用已经可以减轻了一部份的工作,但是想进一步使这些自定义的用户控件可以进一步重用,而不必要重新编写相关的代码来实现近似的功能,就需要再进一步实现另一种层次的重用。
在上面所说的使用固定代码和动态数据来实现第二种层次的重用。应该所有做WEB开发的人都知道在一个HTML标签中可以加入不同的属性标识来设定这个标签的显示或状态,例如在一个<td width="50%"> 可以在一个表格中设定宽为50%,也可以设定其他属性来改变它的显示,在asp.net 1.1 的绝大部分服务器控件都是可以设定它的某个属性来改变它的显示或其他状态,其中最基本的就是那个ID属性了,应该每一服务器端控件都会用到。
用户自定义控件其实是将实现某一个功能的页面在不包含<html><head>以及<body> 的一个页面显示。即其实说白了,asp.net 1.1 中的用户自定义控件其实也是一个asp.net的页面,这也说明它们两个都是间接或直接继承同一个父类的。好了,既然是页面就可以接受输入参数了,而且用户自定义控件和普通的aspx页面一样都有一个Page_Load的事件,而且在加载时都会触发这个事件。也是因为都是间接或直接继承同一个父类,所以自身的实例都有HttpResponse,HttpRequest,HttpContext,HttpCookie这些对象的实例引用。然而,有这些对象的实例引用就好办了。在用户控件可以通过获取querystring的值来实现动态数据。但是如果是没有这些相关的输入参数又应该如何实现呢?当然,是有办法的,记得在没一个服务器端控件都有一个ID的属性,然而用户自定义控件也不例外,虽然可以说用户自定义控件其实是一个实现某个功能的页面,但是在HTML视图方式下,他们同样有一个ID 来标识。要实现在没有输入参数的重用就是通过它们的ID来实现了。
首先,在web.config或自定义的xml文件定义,一些相关的这个要实现固定代码动态数据的ID号和对应ID值的用户控件的参数值。然后将这些用户控件放到不同页面上,并根据在配置文件中定义的id号来标识这些相同的用户控件。最后,就是取得动态输入参数了。在后台代码中获取该用户控件的ID值,然后使用该ID值作为搜索配置文件中参数值的键值,就可以获取到不同ID值的输入参数值,这样也就可以实现所谓的固定代码,动态数据的重用。
如有不足的地方请指出。
posted on 2005-11-22 14:16 BlackAngel 阅读(...) 评论(...) 编辑 收藏