关于页面实现重写问题
来源:互联网 发布:spss软件 编辑:程序博客网 时间:2024/05/21 13:16
对于ASP.NET编程,事件模型是入门知识。页面事件,我们通常用得最多的是Load事件,但是实际上页面还有Init,Render等事件可用。事件的发生顺序可以参照MSDN。本篇不谈顺序,而是谈事件的重写。
问题:
网站中有很多页面是需要权限验证的,即非登陆用户无权访问。如果我们一页一页的在PageInit事件中处理权限会非常麻烦,常见的设计就是们将这部分页面抽象出一个共同的父类RightPage,在父类中写一次PageInit的处理即可,那么凡是继承RightPage的页面都自动具备了权限验证功能。
试验:
RightPage类代码如下:
public class RightPage : System.Web.UI.Page
{
void Page_Init(object sender, EventArgs e)
{
//检查用户是否已经登录
Data.UserInfo ui = (Data.UserInfo)Session["userinfo"];
//如果没有登录则导航到登录页面。
if (ui == null)
{
Response.Redirect("~/UserLogin.aspx");
}
}
}
{
void Page_Init(object sender, EventArgs e)
{
//检查用户是否已经登录
Data.UserInfo ui = (Data.UserInfo)Session["userinfo"];
//如果没有登录则导航到登录页面。
if (ui == null)
{
Response.Redirect("~/UserLogin.aspx");
}
}
}
这是利用了ASP.NET默认事件方法,命名规则一般是Page_事件名。比如我们常见的Page_Load就表示Page的Load事件发生时要执行的代码。在以前的ASP.NET Web应用程序模式下,还可以看到Page.Load+=new EventHandler这样的语句,而在ASP.NET网站模式下就难看到了。
这种方法的优点是实现简单,容易理解。缺点是不方便多层次继承中的重写,因为这种默认方法中不能使用base关键字。当然,你可以使用实时绑定的办法来实现上述效果,这样就可以避免使用Page_**方法了。
第二种方法是重写On**方法:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
//开始验证
{
base.OnLoad(e);
//开始验证
//检查用户是否已经登录
Data.UserInfo ui = (Data.UserInfo)Session["userinfo"];
//如果没有登录则导航到登录页面。
if (ui == null)
{
Response.Redirect("~/UserLogin.aspx");
}
}
Data.UserInfo ui = (Data.UserInfo)Session["userinfo"];
//如果没有登录则导航到登录页面。
if (ui == null)
{
Response.Redirect("~/UserLogin.aspx");
}
}
结论:
重写时尽量用override重写On**方法。这样方便多层继承。
- 关于页面实现重写问题
- 关于实现Comparable接口重写compareTo方法报错问题
- 关于两个Activity实现页面跳转问题
- 关于使用IIRF2.0 重写 导致 Cookie 不能在其它页面使用的问题
- 关于重写的一个问题
- 关于重写UITextField的问题
- 关于URL重写的实现
- asp.net页面事件重写问题
- 关于重载与重写 异常问题
- 关于URLRewriter重写URL的问题...
- 关于重写View的onDraw的问题
- 关于重载和重写、多态问题
- 关于js里undefined的重写问题
- C#关于重写的一些问题
- 关于重载与重写的规则问题
- 关于 fragment重写onCreateOptionsMenu不执行问题
- 关于页面编码问题
- .net下如何实现URL重写,实现静态页面
- Teddy改进的网页MDI窗口效果
- Asp.Net中页面运行时动态载入的UserControl内元素的事件处理的注意事项
- GUI设计禁忌
- 遇到的两例CDO.Message Error问题的解决
- Linux设备驱动框架、配置文件及加载
- 关于页面实现重写问题
- 再谈orm和代码生成
- 谈谈NHibernate orm的局限性
- SQL无限分类存储过程整理2
- 也谈orm和代码生成
- 基于Rss协议的组件式Web基础构架探讨(未完成0407)
- 写了一个客户端解析的Rss阅读器
- Can not connect to MySQL server 错误
- 发送邮件(到目前我用过最成功的发送邮件方式)