BasePage继承

来源:互联网 发布:java逆波兰表达式 编辑:程序博客网 时间:2024/04/30 10:15
 

ASP.NET 比起传统ASP网页最大

一 般我们建立一个Web Application后总是会加入许多不同的页面,虽然看上去每个页面都有各自不同的功能,但是仔细瞧瞧你一定会发现每个页面都会有共同的特性或功能, 把这些共同的行为规画在物件导向的继承架构下可以建立更完善的系统模组,我的偶像维克大队长就发生这样的一个故事。

维克大队长又接到新的任务,这次的客户可真是有够难搞。

「我们需要一个报表查询系统,而且每个页面功能都要检查使用者的权限以免有人会在我们的系统上做坏事。」客户这 说。

这简单,只要在每个页面贴上一段检查权限的函式就好了,不过维克大队长选择了更好的方法,他先写了一个继承System.Web.UI.Page的BasePage页面,并且在OnPreLoad事件中加入检查权限的函式。

Example:

public class BasePage : System.Web.UI.Page

{

public BasePage():base()

{

}

protected override void OnPreLoad(EventArgs e)

{

base.OnPreLoad(e);

if (this.ValidatePermission() == false)

{

throw new Exception(“滚吧!!你还没有获得这个页面的授权!!”);

}

}

protected virtual bool ValidatePermission()

{

return false;

}

}

然后在每个后来加上去的功能页面都继承BasePage再复写ValidatePermission()

Example:

public partial class _Default : BasePage

{

protected void Page_Load(object sender, EventArgs e)

{

this.DataBind();

}

protected override bool ValidatePermission()

{

If( User.Name == “维克大队长”)

{

return true;

}

else

{

return false;

}

}

}

这样一来只要所有继承

最后维克大队长又漂亮的完成了他的任务。

最后再做一个存取 Session 的实例

一,建好一个项目BasePageDemo并建一个类 BasePage

代码如下:

using System;

using System.Collections.Generic;

using System.Text;

using System.Web;

namespace BasePageDemo

{

public class BasePage:System.Web.UI.Page

    {

     

      //取Session值

      public static string GetSession(string key)

      {

          return System.Web.HttpContext.Current.Session[key].ToString();

      }

     

      //设置Session 值

      public static void SetSession(string key,string str)

      {

          System.Web.HttpContext.Current.Session.Add(key, str);

      }

    }

}

二,在以后每个新建的页面都继承应该BasePage类

代码如下:

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using BasePageDemo;

public partial class Default3 :BasePage

{

    protected void Page_Load(object sender, EventArgs e)

    {

        SetSession("UserID", "我要测试");

        string value = GetSession("UserID");

        Response.Write(value);

    }

}

原创粉丝点击