zoukankan      html  css  js  c++  java
  • ASP.NET进阶(4):认识Page类吗?


    其实看到这个标题,我想一些人应该知道我们要谈论.cs类的实际应用。以前我是ASP程序员,那时候用VBS脚本编程,如果要使用其他方法(比如公共的方法)就得include一些function.asp,就像js的运行一样也要先引用其他的js函数。 所以,转到ASP.NET后,我也没在意类这个东西,也不清楚静态和非静态的区别,反正就是实例化后就可以调用其方法就行了,而aspx.cs里面都是写方法的,就是一股脑的还是以前的编程模式。或许有些人也有这种经历,但是我们不能一直这样浑浑噩噩的编程,应该清楚方法是如何执行的,我们如何设计类。

    随便新建一个ASPX页(我这里只用ASP.NET Web Application,而不是WebSite),都会生成page.aspx\page.aspx.desinger.cs和page.aspx.cs,打开2个.cs文件,会发现其中一个是让我们写方法的,另外一个就是记录我们使用的控件(desginer.cs)。 
    在VS2003的时候,desginer.cs是不存在的,所有的控件声明都在.cs里,而且默认还会生成一些代码(如下):
        #region Web 窗体设计器生成的代码
        
    override protected void OnInit(EventArgs e)
        {
            
    //
            
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            
    //
            InitializeComponent();
            
    base.OnInit(e);
        }
        
        
    /// <summary>
        
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        
    /// 此方法的内容。
        
    /// </summary>
        private void InitializeComponent()
        {    

        }
        
    #endregion


    我们可以看到 OnInit是初始化事件的方法,默认被重写,因为要执行InitializeComponent这个私有方法,因为InitializeComponent方法每个页面都不一样,之所以不一样是因为他主要是用来给控件的事件订阅方法,比如Button1的Click如果有具体行为,就会在这里增加this.Button1.Click += new EventHandler(Button1_Click);这样按钮在被点击的时候就会执行Button1_Click这个方法了,这些订阅代码VS是自动添加的(虽然你可以手动去改他们),2005以后就被隐匿了(内部已经帮我们实现了)。


    由此,我们可以想象到,类的执行顺序,OnInit ->  InitializeComponent -> Page_Load -> Your Function。当然还有其他的事件方法,我们接着看。
    【注意】这是经常考的面试题:ASP.NET的生命周期!
    所谓生命周期,我们都知道一个变量的作用域,一个对象从创建到销毁就是他的生命周期。所以这个考题就是在考你的(PageName)页面类的实例的执行顺序。 执行完了自然就没了。我们新建的页面都是继承自System.Web.UI.Page类,所以基本上就是要看Page类的执行顺序。
    详情看官方解释:http://msdn.microsoft.com/zh-cn/library/ms178472(VS.80).aspx,其中介绍了整个过程和相关的事件。
    其实Page类也是继承自Control类,所以Page也是个Control哦,所以生命周期里的一些事件,其实是Control的,比如OnInit,OnLoad,OnPreRender,OnUnload,OnDataBinding,所以其他的控件也都支持这些事件。在我们开发自定义控件的时候,也可以操作这些事件,来自定义我们的控件特性。
  • 相关阅读:
    纯css切换左侧菜单
    HDU——T 1556 Color the ball
    CODEVS——T 1404 字符串匹配
    HDU——T 1506 Largest Rectangle in a Histogram|| POJ——T 2559 Largest Rectangle in a Histogram
    BZOJ——T 1113: [Poi2008]海报PLA
    POJ——T 2796 Feel Good
    November 27th 2016 Week 48th Sunday
    November 26th 2016 Week 48th Saturday
    November 25th 2016 Week 48th Friday
    November 24th 2016 Week 48th Thursday
  • 原文地址:https://www.cnblogs.com/mad/p/1839362.html
Copyright © 2011-2022 走看看