就是知道有生命周期方法,老是听说可以重写,可比较少看到重写的例子。(可能是接触的项目少了),请大虾们给点实例,感谢!

解决方案 »

  1.   


    就是页面生命周期那些零零散散的方法,什么OnInit PreRender  PreLoad 这一类的方法
      

  2.   

    httphandler 和 httpmodule.可以控制页面加载的过程
    http://www.cnblogs.com/yuanyuan/archive/2010/11/15/1877709.html
      

  3.   

    你是指这个override ?
        public string apilist1 = "";
        public string URL = "";
        public string URL_Menu = "";
        override protected void OnInit(EventArgs e)
        {
            CheckAdminAuthority();
            if (CheckAuthorityCode("G1000"))
            {
                URL = "Progress/Implementation.aspx";
                URL_Menu = "menu.aspx?type=0";
            }
            else if (CheckAuthorityCode("G2000"))
            {
                URL = "Project/project_list.aspx";
                URL_Menu = "menu.aspx?type=1";
            }
            else if (CheckAuthorityCode("G3000"))
            {
                URL = "base/organ_list.aspx";
                URL_Menu = "menu.aspx?type=2";
            }
            else if (CheckAuthorityCode("G4000"))
            {
                URL = "Sys/sys_user_list.aspx";
                URL_Menu = "menu.aspx?type=3";        }
            else
            {
                URL = "Progress/Implementation.aspx";
                URL_Menu = "menu.aspx?type=0";
            }
        }
      

  4.   

    我觉得这个不叫重写,你新建一个aspx页面时,默认提供了一个protected void Page_Load(object sender, EventArgs e)
    {}aspx页面生命周期提供的事件都是按照上面的格式来写(这些时间大概有10个左右吧,可以网上查查),我的理解是,这些事件是微软提供的“接口”,就是在页面从“生”到“死”相应的时间所触发的事件,有力于程序员实现更为复杂的功能
      

  5.   

    重写页面方法
    一个自定义控件继承自ImageButton控件,在控件render之前设置其ImageUrl属性:
    protected override void OnPreRender( EventArgs e )
    {
        // setup inital image state
        this.ImageUrl = PageContext.Theme.GetCollapsiblePanelImageURL( PanelID, DefaultState );
        UpdateAttachedVisibility();
        base.OnPreRender( e );
    }
      

  6.   

    override 是Discuz!NT常用到的,因为他的模板要在页面加载前选初使化,并附值给全局变量,以方便后期的调用<%@ Page language="c#" AutoEventWireup="false" EnableViewState="false" Inherits="Discuz.Web.activationuser" %>
    <%@ Import namespace="System.Data" %>
    <%@ Import namespace="Discuz.Common" %>
    <%@ Import namespace="Discuz.Forum" %>
    <%@ Import namespace="Discuz.Entity" %><script runat="server">
    override protected void OnInit(EventArgs e)
    { /* 
    This page was created by Discuz!NT Template Engine at 2010/5/6 17:18:26.
    本页面代码由Discuz!NT模板引擎生成于 2010/5/6 17:18:26. 
    */ base.OnInit(e); templateBuilder.Capacity = 220000; if (infloat!=1)
    { templateBuilder.Append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n");
    templateBuilder.Append("<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n");
    templateBuilder.Append("<head>\r\n");
    templateBuilder.Append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n"); if (pagetitle=="首页")
    { templateBuilder.Append("<title>");
    templateBuilder.Append(config.Forumtitle.ToString().Trim());
    templateBuilder.Append(" ");
    templateBuilder.Append(config.Seotitle.ToString().Trim());
    templateBuilder.Append(" - Powered by Discuz!NT</title>\r\n"); }
    else
    { templateBuilder.Append("<title>");
    templateBuilder.Append(pagetitle.ToString());
    templateBuilder.Append(" - ");
    templateBuilder.Append(config.Forumtitle.ToString().Trim());
    templateBuilder.Append(" ");
    templateBuilder.Append(config.Seotitle.ToString().Trim());
    templateBuilder.Append(" - Powered by Discuz!NT</title>\r\n"); } //end if
    templateBuilder.Append(meta.ToString());
    templateBuilder.Append("\r\n");
    templateBuilder.Append("<meta name=\"generator\" content=\"Discuz!NT 3.1.0\" />\r\n");
    templateBuilder.Append("<meta name=\"author\" content=\"Discuz!NT Team and Comsenz UI Team\" />\r\n");
    templateBuilder.Append("<meta name=\"copyright\" content=\"2001-2010 Comsenz Inc.\" />\r\n");
    templateBuilder.Append("<meta http-equiv=\"x-ua-compatible\" content=\"ie=7\" />\r\n");
    ....
    } //end if
    Response.Write(templateBuilder.ToString());
    }
    </script>
      

  7.   

    你在.cs空白的地方(类内任何方法外) 输入override ,然后就可以看到你所有可以override的方法了。
      

  8.   


    这位大哥说的是,msdn上也提到开发自定义控件,需要对生命周期方法很熟悉。但由于平常用得比较少,小弟感觉自己忽视了。前几天去hp面试,两轮面试的人第一个问题都是问我生命周期,直接悲剧了