ASP.NET实现用MasterPage中的.cs文件 代替项目中的PageBase。
写这篇文章的动机,来自于一次项目重构。在.Net Framwork 2.0的B/S架构项目中同时采用PageBase和MasterPage技术,发现每次访问页面,页面同时访问PageBase和MasterPage,不仅造成性能降低,甚至有可能给日后的项目功能扩充和调整带来逻辑错误隐患。
PageBase:.Net Framework 1.1 中经常使用的一种封装多个页面相同功能的技术。PageBase.cs类继续自System.Web.UI.Page类,项目中的Web页面继续自PageBase.cs类,通过重写基类中的页面初始化方法,实现调用PageBase中的业务功能,例如:url参数验证,保存访问量等功能(具体实现方式参见微软官方例子duwamishi)。
MasterPage:.Net Framework 2.0 中新特性,物理上包括两个文件,分别是:.Master文件(Html标记),.cs文件(C#代码)。.Master文件实现显示层绘制,.cs文件实现具体功能。继续自MasterPage的Web页面可以继续MasterPage中的显示层内容。绘制通用的页头页脚,定制统一的布局,MasterPage是不错的选择。
用MasterPage技术,代替PageBase,ASP.NET实现地址栏参数验证。
简单的做个解释吧
登录系统之后,url地址栏中带有参数:
http://localhost:3730/MasterPageBaseDemo/TestPage.aspx?id=1001
此时用户手动修改url地址栏中参数为:
http://localhost:3730/MasterPageBaseDemo/TestPage.aspx?id=1002
被视为非法操作,系统将自动跳转回登录页面。
传统的Page做法为:
publicclassPageBase:System.Web.UI.Page
{
publicPageBase()
{
}
/**////<summary>
///入口方法
///summary>
protectedvoidInitialize()
{
//插入通用业务逻辑
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
Web页面:
publicpartialclassTestPage:PageBase
{
//传统的调用PageBase的方法
/**/////<summary>
///重写基类OnPreInit()方法,调用通用验证方法
///summary>
///<paramnameparamname="e">param>
protectedoverridevoidOnInit(eventargse)
{
base.Initialize();
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
参照其做法,将PageBase中的代码移入MasterPage中:
MasterPage.cs:
publicpartialclassMyMasterPage:System.Web.UI.MasterPage
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
//调用验证方法
Initialize();
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
将Web页面中的代码修改为:
publicpartialclassTestPage:System.Web.UI.Page
{
//仿照PageBase方法,调用Master中的方法
/**////<summary>
///重写基类OnPreInit()方法,调用通用验证方法
///summary>
///<paramnameparamname="e">param>
protectedoverridevoidOnInit(eventargse)
{
//获得母板页引用
MyMasterPagemyMasterPage=(MyMasterPage)this.Master;
//调用母板页中通用验证方法
if(!IsPostBack)
{
myMasterPage.Initialize();
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
以上介绍ASP.NET的PageBase和MasterPage
【编辑推荐】