关于ASP.NET页面生命周期的整体把握

对于每一个.NET程序员,对于ASP.NET页面生命周期都有一定的了解和把握。关于一些细节方面请参考 http://blog.sina.com.cn/s/blog_5f7aa2970100d5h4.html,内容比较详尽,本文将不再概述。本文主要是从 继承以及视图状态,事件,委托,容器控件以及子控件这些方面来把握和控制整体的页面生命周期。

先看下下面4个相关页面的代码(为降低复杂度,很多代码被删减与精简,仅提供最基本的操作代码)。仅仅 几个文件,先看下整体文件的布局,有一个整体的把握。            

(一)父类的相关事件以及处理

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1   public class UserParentPage:System.Web.UI.Page
    {
        /// <summary>
        /// 对回传数据的处理,以及其他内容的设置、获取
        /// </summary>
        /// <param name="e"></param>
        protected override void OnInit(EventArgs e)
        {
            Core.Trace.TraceInfo("UserParentPage  OnInit");
            base.OnInit(e);
            //编写相应的代码防止SQL注入
            //System.Web.HttpContext.Current.Request.QueryString/Form
            //根据上下文对象来检测,以及做出相应的处理
            //以及其他一些内容的设置、控制等等
        }

        protected override void OnLoad(EventArgs e)
        {
            Core.Trace.TraceInfo("UserParentPage  OnLoad");
            base.OnLoad(e);
            //编写相应的代码对整体页面的控制
        }
    }

(二)用户控件(子控件)的相关内容

Code highlighting produced by Actipro 

CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1  public partial class UserEventControl : System.Web.UI.UserControl
    {
        public delegate void ChangedHandler();
        public event ChangedHandler Changed;
        private void Page_Load(object sender, System.EventArgs e)
        {
            Core.Trace.TraceInfo("UserEventControl  OnLoad");
            if (!Page.IsPostBack)
            {
                Core.Trace.TraceInfo("UserEventControl  OnLoad  !Page.IsPostBack==true");
                SetContent();
            }
        }
        private void SetContent()
        {
            int len =12,num = 2,perRowMaxCount=8;
            System.Text.StringBuilder table = new System.Text.StringBuilder();
            for (int i = 0; i <= num; i++)
            {
                table.Append(@"<table  bordercolor='black' width='100%'><tr align='left'>");
                for (int j = 0; j < perRowMaxCount; j++)
                {
                    int p = i * perRowMaxCount + j;
                    if (p < len)
                    {
                        string paramValue ="param"+p.ToString();
                        string showValue ="show"+p.ToString();
                        table.Append(string.Format(@"<td width='12.5%'><a  

href='javascript:__doPostBack(""{2}"",""{0}"")' CommandName=""{0}"" 

class='line'><font>{1}</font></a></td>", paramValue,showValue, 

lbtnShow.ClientID.Replace("_lbtnShow", "$lbtnShow")));
                    }
                    else
                    {
                        table.Append(string.Format(@"<td width='12.5%'></td>"));
                    }
                }
                table.Append(@"</tr></table>");
            }
            lblShow.Text = table.ToString();
        }

        public string CurrentID
        {
            set
            {
                ViewState["CurrentID"] = value;
            }
            get
            {
                return (string)ViewState["CurrentID"];
            }
        }

        protected override void OnInit(EventArgs e)
        {
            Core.Trace.TraceInfo("UserEventControl  OnInit");
            InitializeComponent();
            base.OnInit(e);
        }

        private void InitializeComponent()
        {
            this.lbtnShow.Click += new System.EventHandler(this.lbtnShow_Click);
            this.Load += new System.EventHandler(this.Page_Load);
        }
        /// <summary>
        /// 单击时将触发
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lbtnShow_Click(object sender, System.EventArgs e)
        {
            Core.Trace.TraceInfo("UserEventControl  lbtnShow_Click");
            CurrentID = Request.Form["__EVENTARGUMENT"];//获取回传值
            SetContent();//设置内容----因为有些内容被修改过,如样式什么的,本例忽略
            Changed();//触发事件
        }
    }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索控件
, 页面
, 代码
, system
onload
,以便于您获取更多的相关知识。

时间: 2024-10-30 05:11:15

关于ASP.NET页面生命周期的整体把握的相关文章

一起谈.NET技术,关于ASP.NET页面生命周期的整体把握

对于每一个.NET程序员,对于ASP.NET页面生命周期都有一定的了解和把握.关于一些细节方面请参考http://blog.sina.com.cn/s/blog_5f7aa2970100d5h4.html,内容比较详尽,本文将不再概述.本文主要是从继承以及视图状态,事件,委托,容器控件以及子控件这些方面来把握和控制整体的页面生命周期. 先看下下面4个相关页面的代码(为降低复杂度,很多代码被删减与精简,仅提供最基本的操作代码).仅仅几个文件,先看下整体文件的布局,有一个整体的把握. (一)父类的相

详解ASP.NET页面生命周期_实用技巧

ASP.NET页面运行时候,页面将经历一个生命周期,在生命周期中将执行一系列的处理步骤.包括初始化.实例化控件.还原和维护状态.运行时间处理程序代码以及进行呈现.熟悉页面生命周期非常重要,这样我们才能在生命周期的合适阶段编写代码.如果我们能在写代码的时候想着我们现在是在做生命周期的哪一步那将是非常好的. 几个代表性的问题 在开始的时候我们先思考几个问题,看看我们在描述完页面生命周期的时候,能不能回答上这几个问题 1.为什么在服务器端能通过this.textbox1.Text获取到用户提交过来的数

记不住ASP.NET页面生命周期的苦恼

介绍 对于ASP.NET开发者,理解ASP.NET的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特定 的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供的事件处理方法(method)非常困 难.互联网上有很多关于页面生命周期内部机制的文章,所以本文只准备简单覆盖技术的基础部分,更主 要的目的是给大家提供一个简单得记忆页面生命周期的方法. 准确的记忆ASP.NET页面生命周期每一个阶段发生了什么事情是比较困难的,一种便于记忆的方法是根 据各个阶段的名字组合出一个缩写.微软的文

Asp.net页面生命周期

前言  本篇记录的是Asp.net页面生命周期,也就是管道模型的最末端HttpHandler的生命周期.(Page继承了IHttpHandler接口.想了解管道模型,请参考asp.net管道模型(管线模型)之一发不可收拾).如有不足请大家指出^_^!!  本篇主要参考:ASP.NET编程模型之页面生命周期十一步详解  ASP.NET编程模型之ASP.NET页面生命周期图解 <亮剑.net 深入体验与实战精要> 正文 1.页面实例化之前:Asp.net工作进程会确定是否需要分析和编译页面从而开始

asp.net页面生命周期详解_实用技巧

Asp.net是微软.Net战略的一个组成部分.它相对以前的Asp有了很大的发展,引入了许多的新机制.本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好.更灵活地操纵Asp.net的作用.当一个获取网页的请求(可能是通过用户提交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件.在我们试图建立Asp.net页面的时候,这个执行周期是不必去考虑的,那样只会自讨苦吃.然而,如果被正确的操纵,一个页面的执行周期将是一

详解ASP.NET页面生命周期事件_实用技巧

下面是ASP.NET页面初始的过程:1. Page_Init();2. Load ViewState;3. Load Postback data;4. Page_Load();5. Handle control events;6. Page_PreRender();7. Page_Render();8. Unload event;9. Dispose method called; 下面对其中的一些过程作下描述:1. Page_Init();这个过程主要是初始化控件,每次页面载入执行这个初始过程,

艾伟_转载:温习:ASP.NET页面生命周期

ASP.NET 页面生命周期虽然是最基础的东东,但我发现很多人不能准确地的说出,可能多数程序人员只是对深层技术感兴趣的原因吧?可是如果忘记了最基础的东西,有时会给你的开发制造很大的麻烦.现在把MSDN上的ASP.NET页面生命周期贴出来,大家温习一下吧(温习之前请问一下自己你知道吗): ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维护状态.运行事件处理程序代码以及进行呈现.了解页生命周期非常重要,因为这样做您就能在生命

IIS处理Asp.net请求和Asp.net页面生命周期说明

首先我们要弄清楚两个非常重要的概念: 1, worker process(w3wp.exe). worker process管理所有的来自客户端的请求并给出响应.它是IIS下asp.net应用程序的核心. 2, application pool. 它是worker process的容器,IIS5及之前的IIS版本均没有application pool的概念.每一个application pool对应着一个worker process,在IIS Metabase中维护着Application Po

Asp.Net页面生命周期(多图)

原文 http://www.cnblogs.com/DotNetEnjoy/archive/2013/04/15/3022672.html asp.net的请求处理模型已经讲完几个星期了,但一直没有时间整理,一来是因为知识点确实繁杂,难以整理,二来了解得也不够清晰,存在一些误区.今天有空写下这篇博文,希望大家指正其中的不足,以便能加深对请求响应的理解. 根据自己理解和老师讲课的内容,花了一张图   1.浏览器实际上是一个Socket客户端,它向服务器发送请求报文 2.请求报文被封装为http请求