1. 程式人生 > >後臺跳轉頁的實現

後臺跳轉頁的實現

隔離 難度 思想 event 登錄頁面 this 技術 事情 transfer

在做牛腩新聞公布系統的時候,因為後臺管理頁的登錄。須要管理員登錄後才幹打開。

這是什麽意思呢?

比如我們在做新聞的加入的時候,不能直接登錄新聞加入頁。須要從前臺以管理員身份登錄後才幹操作,因此在後臺界面載入的事件中總須要寫做一些推斷的操作。假設管理員沒有登錄的話。直接跳轉到登錄頁面。

<span style="font-family:SimSun;font-size:18px;"><span style="font-family:SimSun;"> protected void Page_Load(object sender, EventArgs e)
    {
        //推斷用戶是否是管理員登錄...
        if (Session["AdminUserName"] == null)
        {
            //返回到上一個頁面
            Response.Write("<script>history.back()</script>");
            //跳轉到登錄頁面
            Server.Transfer("~/Admin/AdminLogin.aspx");
        }
    }</span></span>


但是試想。假設後臺管理頁有十多個甚至很多其它的時候。你會每次載入事件的時候都寫這麽多東東嗎?

依據我們學習《設計模式》的經驗,代碼反復往往是個壞東西。因此我們能夠全然把變化的東東根隔離出來。

通過對上面的分析,我們僅僅要寫一個類來實現上述跳轉操作,再讓每一個須要載入的頁面調用就可以。

我們知道每一個Web窗口都繼承於System.Web.UI.Page,因此我們能夠這麽做

<span style="font-family:SimSun;font-size:18px;"><span style="font-family:SimSun;">/// <summary>
/// 繼承於Web.UI.Page的類
/// </summary>
public class BasicPage:System .Web.UI.Page
{
    // 構造函數
    public BasicPage()
    {
        //通過托付,當實例化類的時候。自己主動調用載入事件
        this.Load += new EventHandler(BasicPage_Load);
    }

    public void BasicPage_Load(object sender, EventArgs e)
    {
        //在載入函數中來錯推斷的操作
        if (Session["UserName"]==null)
        {
            //當為空的時候,直接跳到登錄界面
            Response.Redirect("XXXXXXXX");            
        }
        
    }
}
</span></span>

因此我們僅僅須要在後臺頁面繼承此類就可以,做到了代碼復用的功能。


思想升華
事實上上述的實現過程從技術上沒什麽難度。難得是為何沒有想到這麽多呢?這是最重要的事情。學習《設計模式》也好長時間了,可總是還不能做到靈活的運用。有時候寧可多做一些反復的事情,比如上述代碼的大量反復的工作,就沒有認真的靜下心來去思考一下。

做程序即簡單。又艱難。簡單的是技術。難得是你的思考方式。








後臺跳轉頁的實現