asp.net控件开发(二)-简单属性 |
||||
本文标签:asp.net 控件开发 属性 我们开发出来的控件一般都需要跟使用控件的人编程人员交互,其中交互有两个途径:一个是属性还有就是事件 。属性可能是简单的类型如:int、string等并不太复杂的类型,也有比较复杂的类型如:集合 。 一、属性实现交互 我们还是沿用上面的例子来添加属性 PicShow示例:
上面的示例就是改变了上次的控件只能指定死了图片,这样图片的地址就可以由控件的使用人员自己去指定了 。控件中定义了一个私有字段,通过属性ImgUrl来设置其值,因为我们允许重写其属性,所以定义成了virtual类型的 。这里的属性定义跟一般类的定义是一样的,就不多做说明 。 二、视图状态 底下我们在一个项目中应用此控件,但我们发现,这样的控件的属性的状态是没法维持的 。也就是说,它永远只能维持我们初始给它的值 。
运行后我们会发现,我们的图片只能改变一次 。原因很简单,客户端发出http请求后,服务器端并没有帮我们去维持上一次的请求信息 。 在有的时候我们必须要求其维持状态 。状态分为两种:一个是视图状态,一个是控件状态 。 视图状态在脚本中的表现为:保存到一个叫"_VIEWSTATE"的隐藏域中去,这样来实现保存上次的用户请求 。视图状态是一个集合(ViewState) 。
这里我们只是把ImgUrl重写了,通过视图的状态来实现的,这下子我们在使用时就可以维持上次用户的请求 。 三、控件状态 我们会发现如果用户禁止使用了视图状态的话(在<%Page%>中添加EnableViewState="false"),我们还是维持不了用户的上次请求,这时我们可以通过控件状态来永远地维持 。
注意的一点,我们在重写OnInit方法时,我们只是需要要添加额外的功能,去注册控件状态,所以一定要调用base.OnInit(e)方法,来保存以前的初始化工作 。 【相关文章】
|