2009-12-28 20 views
0

我有一個.NET 2.0應用程序,帶有幾種類型的控件(複選框,按鈕等),我需要根據用戶購買的許可證類型啓用或禁用它們。我想知道是否有一種方法可以支持這個方面,比如使用注入或代理,可以攔截對控制的啓用或其他屬性的調用,並且可以在其中添加所需的邏輯。 如果很重要,我使用Infragistics控件。 關於這個問題的其他想法?其他方法/模式? 謝謝根據許可證類型啓用/禁用控件

+0

嗨,建議你添加標籤'Infragistics到你的標籤。當然你不想顯示用戶不能使用的控件......假設給定的用戶許可證是不變的......?嗯......第二個想法,也許這是一種營銷技巧:讓用戶渴望他們不能使用的東西:)祝你好運, – BillW 2009-12-28 09:33:22

+0

@Bill:「當然你不想顯示用戶不能使用的控件」。我認爲,他會完全相反:看,但不使用,如果沒有許可證;) – serhio 2009-12-28 10:12:23

回答

1

您可以使用自定義屬性來裝飾控件,然後遞歸地遍歷所有控件並檢查該屬性以設置所需的狀態。

+0

作爲這個答案的後續,而不是裝飾控件(這是不可能與內置的控件。檢查框,按鈕等),爲什麼不創建自定義屬性來裝飾頁面類。例如,類似如下的屬性: '[RequiresLicense(LicenseType.Developer,「btnButton1」,「cbCheckbox1」)] public partial class MyPage:Base Page {' }在你的'BasePage'類中,你可以閱讀這些自定義屬性並隱藏/禁用指定的控件。 – WayneC 2009-12-28 16:40:36

+0

您可以在* .designer.cs文件中添加屬性,但添加或更改控件時將刪除它們。所以你的解決方案可能在現實生活中更好:) – 2009-12-28 17:51:27

0

是不是可以在Form_Load()事件中執行它?

if(LicenseType.SomeCheckBoxDisabled) { 
    Form1.SomeCheckBox.Enabled = false; 
} 
0

爲每個要保護的控件添加一個附加屬性。類似...

<asp:Button ID="Button1" runat="server" RequiredLicense="PremiumEdition">Click here</asp:Button> 

如果我記得沒錯,ASP.NET允許您向控件添加未定義的屬性,這些屬性將在控件的屬性屬性中提供。然後,在您的BasePage類的初始化(即PreRender,PageLoad等)中,您可以遞歸地遍歷頁面控件並查找具有「RequiredLicense」屬性的控件,並根據需要隱藏或禁用該控件。

0

感謝您的所有答案。我認爲我的問題並不清楚,因爲我不確定我在找什麼。 我正在尋找的答案是:我的應用程序是使用CAB框架編寫的。爲了根據售出的包啓用/禁用應用程序中的控件,我將使用SCFS中實現的命令模式。 謝謝