ASP.NET中BasePage的几种设计方式

王朝学院·作者佚名  2011-04-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

使用它主要是为了复用代码的公用部分下面是整理出来三种实现方式:

准备工作:

1 先在BasePage.cs中创建部分类BasePage 比在创建接下来用到的用于演示的方法BaseLoad

代码:

public partial class BasePage : System.Web.UI.Page

{

PRotected void BaseLoad()

{

string code = Request.QueryString["id"];

if (String.IsNullOrEmpty(code))

{

Response.End();

}

}

}

2 使用BasePage.cs的Default.aspx

Default.aspx.cs代码:

public partial class Default : BasePage

{

protected void Page_Load(object sender, EventArgs e)

{

//do something

}

}

一、重写BasePage的OnLoad方法,该方法会触发OnLoad事件

BasePage.cs代码:

public partial class BasePage : System.Web.UI.Page

{

protected override void OnLoad(EventArgs e)

{

BaseLoad();

base.OnLoad(e);

}

}

二、在构造函数中把BaseLoad注册到基类的this.Page.PreLoad事件

BasePage.cs代码:

public partial class BasePage : System.Web.UI.Page

{

public BasePage()

{

this.Page.PreLoad += BaseLoad;

}

}

三、这种方式让继承他的子类方式看起来有些怪异(不能在里面使用Page_Load)

BasePage.cs 代码:

public abstruct class BasePage : System.Web.UI.Page

{

protected void Page_Load()

{

string code = Request.QueryString["id"];

if (String.IsNullOrEmpty(code))

{

Response.End();

}

PageLoad();

}

protected abstruct void PageLoad() ;

}

Default.aspx.cs 代码:

public partial class Default : BasePage

{

protected override void PageLoad()

{

//do something

}

}

根据以上三种方式,第一和第二种方式使得继承它的子类可以按常规的实现,更符合我们的编程习惯便于理解阅读所以推荐使用

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航