快速业务通道

燃霧ASP.NET坪何字崙?鈍?

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
     writer.AddAttribute (HtmlTextWriterAttribute.Type, "submit");
                        writer.AddAttribute (HtmlTextWriterAttribute.Value, "Login");
                        writer.RenderBeginTag (HtmlTextWriterTag.Input);
                        writer.RenderEndTag();
                        writer.RenderEndTag();
                        writer.RenderEndTag();
                 }
        }
}

了解自定义控件开发的朋友应该对上面的代码不陌生。控件最后呈现的效果基本和ASP.NET中的标准的 控件外观差不多的。上面的控件缺少事件等。但是我们这里不关注这些。我们关注视图。

大家可以看过我们实际上是再用ViewState来把保存控件的UserName,Password的信息,就是说如果我 们仅仅只是用下面的代码来保存,如下:

                private string userName;
                public string UserName
                {
                        get { return userName; }
                        set{userName =value ;}
                }

我们控件的状态就会在回传的过程中丢失。

我们现在就来具体的讲述视图在上面的控件是如何起作用的。

假设我们开发的控件用在了一个已经部署好了的IIS中的网站的页面上了。当我们第一次请求这个页面 ,如:http://localhost/Test/Default.aspx。页面就开始被ASP.NET运行时开始解析编译,最后把结果发 送给我们,如下:(假设页面中就只有一个控件)

起始ASP.NET运行时在解析页面的时候,就把Login控件的一些状态,如UserName属性等其他的设置信 息序列化为一个字符串保存名为_VIEWSTATE的隐藏控件中,,然后把这些个序列化是通过一个转换器来进 行的,如UserName属性的值类型是String,所以就用StringConvert来转换。其实在ASP.NET中有很多的内 置的转换器,派生自TypeConvert,,如StringConvert,BoolenConvert。也就是说,如果我们在上面的控 件中有sring,int,bool等的属性(如UserName就是string),ASP.NET自动将他们用对应的转换器转换;所 以如果我们开发了自定义的一个类,如Person类,而且这个类还是上面Login控件的一个属性,  那么我 们就必须开发自定的转换器来转换Person,我们自定义的转化器一定要继承自TypeConvert。

然后就把转换后的结果发送客户端的浏览器中,当我们在浏览器中填写了用户名等信息后,我们点击 按钮,整个页面就回传给了服务器,然后服务器就解析数据,同时也解析之前保存在_VIEWSTATE中的信息 ,而且用相应的转换器,来还原之前的属性,然后把这些属性赋值给在服务器端新生成的类的实例。

用转换器是一种方法,但是还有另外的一种方法就是使得我们自定义的类,如之前提及的person类实 现IStateManager接口,接口定义了一个属性,三个方法,其实实现起来也很简单,比实现自定义的转换 器更加简单。而且实现起来格式也很固定的。我们就开改进之前的例子:

  public class Person:IStateManager
        {

                public string AddressInfo
                {
                        get
                        {
                                return ViewState ["AddressInfo"] != nu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号