2011-10-31 56 views
0

我從ASCX控件調用的home.aspx上有一個HasAdminRole()方法。和ASCX一起使用(Home)this.Page).HasAdminRole()用戶控制home.aspx從ASCX控件調用ASPX方法

現在,當我將同一個ASCX添加到不同的ASPX頁Adminuser.aspx時,出現錯誤ASCX嘗試調用(Home)this.Page).HasAdminRole()從一個不同的ASPX頁面比在home.aspx

我得到的錯誤無法轉換類型爲' 。家'。

使用多個ASPX的和用戶控制的嘗試同樣的ASCX調用一個方法上Home.aspx

+0

移動的方法來代替控制?或者建立一個基本的Page類,所有頁面派生出來的控件可以期望找到? – rossisdead

+0

適用於某種方法。但是,我也必須訪問aspx上的按鈕事件。如果用戶決定轉到不同的頁面,我會在ascx中調用該頁面上的button_click方法。 if(Menu1.SelectedValue ==「showestimateportfolio」) ((Home)this.Page).btnEstPortfolio_Click(sender,e);這適用於Im在Home.aspx上,但在其他aspx頁面上出現轉換錯誤。 – user1022776

回答

2

向您建議的.aspx和進有出移動你的管理/角色的邏輯,當我如何解決這個類可以從.aspx和.ascx訪問。這是一種「關注點分離」和在公共區域具有邏輯性的一點兒整潔。基本上 - 只保留頁面代碼隱藏頁面相關的邏輯。

public static class Roles 
{ 
    public static HasAdminRole(User someUser) 
    { 
     // implementation 
    } 
} 

把它從任何頁面的代碼隱藏或其他輔助類:

User foo; 
bool isAdmin = Roles.HasAdminRole(foo); 
+0

適用於某種方法。但是,我也必須訪問aspx上的按鈕事件。如果用戶決定轉到不同的頁面,我會在ascx中調用該頁面上的button_click方法。 (Menu1.SelectedValue ==「showestimateportfolio」)((Home)this.Page).btnEstPortfolio_Click(sender,e);這適用於Im在Home.aspx上,但在其他aspx頁面上出現轉換錯誤 – user1022776