網頁

2012年10月20日 星期六

以Commandname或CommandArgument參數切換頁面


 筆者在做一個網頁時,由於該網頁的按鈕不少(6-8個),每個按鈕都是轉向至指定網址,因此想要透過一些偷吃步來精簡程式碼XD,首先想到的就是使用switch來判斷按鈕傳回的參數.

程式碼如下列:(參考來源為微軟官方網站-Button.CommandArgument 屬性範例)


protected void BtnClick(object sender, CommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "books":
                    Response.Redirect("./BooksAdd.aspx");
                    break;
                case "cate":
                    Response.Redirect("./CateAdd.aspx");
                    break;
                case "course":
                    Response.Redirect("./CourseAdd.aspx");
                    break;
                case "publish":
                    Response.Redirect("./PubAdd.aspx");
                    break;
                case "order":
                    Response.Redirect("./Order.aspx");
                    break;
                case "logout":
                    Response.Redirect("./LogOut.aspx");
                    break;
            }

        }


要特別注意的是,副程式的引數來源(e)是CommandEventArgs 而非EventArgs,筆者就為了這部分抓了好久的錯.
還有另一種作法,透過按鈕的ID來判斷.
程式碼如下列:


protected void BtnClick(object sender, CommandEventArgs e)
        {
            //建立一個Button物件 去抓Buttonid
            Button btn = (Button)sender;
            switch (btn.ID)
            {
                case "books":
                    Response.Redirect("./BooksAdd.aspx");
                    break;
                case "cate":
                    Response.Redirect("./CateAdd.aspx");
                    break;
                case "course":
                    Response.Redirect("./CourseAdd.aspx");
                    break;
                case "publish":
                    Response.Redirect("./PubAdd.aspx");
                    break;
                case "order":
                    Response.Redirect("./Order.aspx");
                    break;
                case "logout":
                    Response.Redirect("./LogOut.aspx");
                    break;
            }

        }

這個副程式適用範圍為,每個按鈕都只需要做重複或相似的動作,使用這樣的作法較能簡化程式碼,但如果按鈕還有其他要做的事件,例如:觸發JavaScript或是寫資料進資料庫,則不建議抽出來做成副程式,會造成程式複雜度提高.

參考來源:CommandEventArgs 類別

沒有留言:

張貼留言