2016-02-16 25 views
0

如果我有兩個網頁形式是這樣的:如何重構代碼以使兩個網絡的一種方法形成

public partial class frm_createVac : System.Web.UI.Page 

public partial class frm_editVac : System.Web.UI.Page 

以及兩者的頁面有以下相同的方法:


private void FillVacations() 
     { 
      DataTable dt = DAL.Vacation.GetVacationTypes(); 
      ddl_vac_type.Items.Clear(); 
      ddl_vac_type.DataSource = dt; 
      ddl_vac_type.DataTextField = "vac_name"; 
      ddl_vac_type.DataValueField = "vac_code"; 
      ddl_vac_type.DataBind(); 

      ListItem item = new ListItem("-SELECT-", "-1"); 
      ddl_vac_type.Items.Insert(0, item); 
     } 

如何修改我的代碼,這樣我有兩個頁面的一種方法?

回答

1

您可以編寫一個繼承自System.Web.UI.Page一個超類,然後讓你的類從超類繼承。然後,您定義的方法你的超級類中,並在子類中使用它:

public partial class Vacationpage: System.Web.UI.Page 
{ 
     //define atttributes 
     public Vacationpage() 
     { 
     } 

     private void FillVacations() 
     { 
     DataTable dt = DAL.Vacation.GetVacationTypes(); 
     ddl_vac_type.Items.Clear(); 
     ddl_vac_type.DataSource = dt; 
     ddl_vac_type.DataTextField = "vac_name"; 
     ddl_vac_type.DataValueField = "vac_code"; 
     ddl_vac_type.DataBind(); 

     ListItem item = new ListItem("-SELECT-", "-1"); 
     ddl_vac_type.Items.Insert(0, item); 
     }   
} 

然後你這樣做:

public partial class frm_createVac : Vacationpage 

public partial class frm_editVac : Vacationpage 

在這些類可以使用FillVacations()。 然後你在一個地方定義你的代碼。

0

編輯昨天在回答@StarterPack輸錯,我已經將你的問題再看看,並意識到你的情況更好的選擇是helper方法,不依賴於標記或控件ID。假設你正在使用的DropDownList這將是

public class VacationHelper 
{ 
    public static void FillVacations(System.Web.UI.WebControls.DropDownList ddl) 
    { 
     DataTable dt = DAL.Vacation.GetVacationTypes(); 
     ddl.Items.Clear(); 
     ddl.DataSource = dt; 
     ddl.DataTextField = "vac_name"; 
     ddl.DataValueField = "vac_code"; 
     ddl.DataBind(); 

     ListItem item = new ListItem("-SELECT-", "-1"); 
     ddl.Items.Insert(0, item); 
    } 
} 

,並調用它的每一頁

VacationHelper.FillVacations(ddl_vac_type); 
相關問題