需求:
开发一个信息板应用程序,有一个业务实体"Board"其中有相关属性(名称,颜色等),每一页在querystring里面都将有一个boardid,如
default.aspx?boardid=14
事实上,每一页将提取相关的board信息,因此我建立了一个base page,以便所有的页面都可以从它继承,在base page的OnPreInit从数据库中提取board对象。想让所有的页面都访问board对象,但只提取一次,所以用以下的代码来实现。Public Class BasePage    Inherits System.Web.UI.Page        Public Shared myBoard As Board = Nothing        Protected Overrides Sub OnPreInit(ByVal e As System.EventArgs)            myBoard = BoardBL.GetBoardByID(HttpContext.Current.Request.QueryString("boardid"))            MyBase.OnPreInit(e)       End SubEnd Class
default.aspx页面
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Me.Title = BasePage.myBoard.NameEnd SubInstead of:Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim myBoard As Board = BoardBL.GetBoardByID(HttpContext.Current.Request.QueryString("boardid"))    Me.Title = myBoard.NameEnd Sub

解决方案 »

  1.   

    我怎么老觉得base page就是一个普通的类,每个页面都引用这个类而已...
      

  2.   

    调用basepage基类的页面相关的语法?
      

  3.   

    basepage中你可以重载page加载时的各种函数, 并定义自己的属性值. 从basepage继承的页面不必自已再重新写重载函数了, 其他页面引用从basepage继承的页面时可以直接访问basepage中定义的属性.masterpage与ppt或flash中的母版页类似, 用于排版, 在固定位置上预先设置各页面共有的显示内容,并预留出区域来显示每个页面自己的内容.basepage与masterpage无任何关系.
      

  4.   

    那么多提供一些BasePage的鲜活应用,各位大虾.
      

  5.   

    BasePage用于重写页面生命周期中某些阶段的处理方式,可以插入用户自己的逻辑,比如访问统计,身份验证,执行时间等等。
    MasterPage是一个容器用于装载具体的Page或者从BasePage继承的Page(如果有的话)。两者继承自不同的类。
    (个人看法)。
      

  6.   

    OnpreInit事件,不大常用,最近看到一些代码中有它,感觉有些模糊,能否根据我的代码解释一下生命周期呢?
      

  7.   

    OnpreInit与Page_PreRender有什么区别,请看我的本帖代码,分析一下问题?
    还有另一帖http://topic.csdn.net/u/20071227/13/a74c6eb7-b548-47d3-8973-34970137481f.html[关于Page_PreRender生命周期段的问题]各位大大看看这段代码中嵌套在page_prerender生命周期中引发,为什么?重赏100大洋,不够再加...!!!%%%
    重谢,200分.
      

  8.   

    在页面预初始化阶段调用OnPreInit方法来引发PreInit事件
    PreInit事件的作用:1、监测IsPostBack属性,确定页面是否第一次被处理。
                         2、创建控件
                         3、设置母版和皮肤
                         4、读取或设置Profile属性
     如果在这个事件中给控件属性赋值,可能会被后面的时间覆盖。
    在页面预呈现阶段,页面上的每个控件都会触发PreRender事件,这个事件可以最后改变页面和控件的内容。
    详细信息 http://msdn2.microsoft.com/zh-cn/library/ms178472.aspx