BasePage继承

ASP.NET 比起傳統ASP網頁最大的好處之一,就是可以用物件導向的方式來設計網頁應用程式,這使得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;
}
}
}

這樣一來只要所有繼承BasePage的網頁都有的檢查的功能,真是聰明,而且萬一那個應死的客戶又企圖加上任何共用的功能時只要修改 BasePage就可以反應在所有頁面上,結論是使用BasePage有益無害,不管是多小的案子都應該採用這種方式來開發,就算BasePage暫時還 也沒任何功能也一樣。

最後維克大隊長又漂亮的完成了他的任務。

 

最后再做一个存取 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);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值