我做了一个aspx页面,其中包含一个用户控件ascx,这个用户控件是用来验证用户的登陆信息是否合法的。我的本意是想页面在载入时先运行用户控件ascx中的page_load事件进行用户验证,然后再运行aspx页面的page_load,进行页面的初始化工作。但是运行调试发现每次aspx页面的page_load都要先于用户控件ascx的page_load运行,就是说每次都是先进行页面的初始化工作,后才进行用户验证。
现在想实现先进行用户合法验证,验证通过后再进行页面的初始化工作,如果解决?

解决方案 »

  1.   

    怎么都不爱用asp.net2005哟?
    版主是不是应当宣传一下。
      

  2.   

    你的问题出在你对“载入”这个纯粹先入为主的理解上。当load事件触发的时候,页面处理已经过半,大部分工作其实是创建控件树和回填状态和收集在load之后该触发的具体控件的事件,这些都是load之前做完的。创建控件,以及回填结果,在CreateChildControls方法就做完了,一切都创建好了之后,才触发load事件(首先是页面的load事件,然后是每一个子控件的load事件)。 load事件其实是通知说一切控件已经准备就绪,而不是说可以开始创建或者初始化控件。
      

  3.   

    我不知道你说的“页面初始化工作”是什么工作。页面值应该做它自己的事,控件只应该做它自己的事,响应代码应该在控件的事件处理方法中而不应该提前到页面的load事件中去做。看起来你是把控件事件放到page的load中去了。
      

  4.   

    在控件的OnInit事件中控制,不要用Page_Load事件
      

  5.   

    to  sp1234(asp.net让我开始理解 ui 架构,架构让我超越asp.net) :
    我说的“页面初始化工作”不是指准备控件,而是读取数据库,对控件进行数据绑定,设定控件的初始值等等工作。
      

  6.   

    这个用户控件是用来验证用户的登陆信息是否合法的
    ——————————————————————————————————————
    从这句话来看,是控件事件。如果用户登陆之后应该改变页面上什么东西,那么这个控件应该出发事件(例如叫做UserLoged事件)委托页面去动态改变自己。
      

  7.   

    应该出发事件(例如叫做UserLoged事件)委托页面去动态改变自己  -->
      应该触发事件(例如叫做UserLoged事件)通知页面去动态改变自己
      

  8.   

    你在用户控件的Init事件中做验证,这个事件先于页面的init和load事件发生。
      

  9.   

    在ascx里做public的sbload事件,把什么载入啦设置啦都在sbload里做掉 在aspx初始化时运行ascx的sbload就可了