後臺跳轉頁的實現
阿新 • • 發佈:2017-07-22
隔離 難度 思想 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>
因此我們僅僅須要在後臺頁面繼承此類就可以,做到了代碼復用的功能。
思想升華
事實上上述的實現過程從技術上沒什麽難度。難得是為何沒有想到這麽多呢?這是最重要的事情。學習《設計模式》也好長時間了,可總是還不能做到靈活的運用。有時候寧可多做一些反復的事情,比如上述代碼的大量反復的工作,就沒有認真的靜下心來去思考一下。
做程序即簡單。又艱難。簡單的是技術。難得是你的思考方式。
後臺跳轉頁的實現