筆者在做一個網頁時,由於該網頁的按鈕不少(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 類別
沒有留言:
張貼留言