我有一個.NET 2.0應用程序,帶有幾種類型的控件(複選框,按鈕等),我需要根據用戶購買的許可證類型啓用或禁用它們。我想知道是否有一種方法可以支持這個方面,比如使用注入或代理,可以攔截對控制的啓用或其他屬性的調用,並且可以在其中添加所需的邏輯。 如果很重要,我使用Infragistics控件。 關於這個問題的其他想法?其他方法/模式? 謝謝根據許可證類型啓用/禁用控件
回答
您可以使用自定義屬性來裝飾控件,然後遞歸地遍歷所有控件並檢查該屬性以設置所需的狀態。
作爲這個答案的後續,而不是裝飾控件(這是不可能與內置的控件。檢查框,按鈕等),爲什麼不創建自定義屬性來裝飾頁面類。例如,類似如下的屬性: '[RequiresLicense(LicenseType.Developer,「btnButton1」,「cbCheckbox1」)] public partial class MyPage:Base Page {' }在你的'BasePage'類中,你可以閱讀這些自定義屬性並隱藏/禁用指定的控件。 – WayneC 2009-12-28 16:40:36
您可以在* .designer.cs文件中添加屬性,但添加或更改控件時將刪除它們。所以你的解決方案可能在現實生活中更好:) – 2009-12-28 17:51:27
是不是可以在Form_Load()事件中執行它?
if(LicenseType.SomeCheckBoxDisabled) {
Form1.SomeCheckBox.Enabled = false;
}
爲每個要保護的控件添加一個附加屬性。類似...
<asp:Button ID="Button1" runat="server" RequiredLicense="PremiumEdition">Click here</asp:Button>
如果我記得沒錯,ASP.NET允許您向控件添加未定義的屬性,這些屬性將在控件的屬性屬性中提供。然後,在您的BasePage類的初始化(即PreRender,PageLoad等)中,您可以遞歸地遍歷頁面控件並查找具有「RequiredLicense」屬性的控件,並根據需要隱藏或禁用該控件。
感謝您的所有答案。我認爲我的問題並不清楚,因爲我不確定我在找什麼。 我正在尋找的答案是:我的應用程序是使用CAB框架編寫的。爲了根據售出的包啓用/禁用應用程序中的控件,我將使用SCFS中實現的命令模式。 謝謝
- 1. 根據文件類型禁用NeoComplCache
- 2. 根據安裝類型啓用/禁用功能
- 3. 應用程序許可證類型
- 4. 哪些許可證禁止用戶刪除「許可證聲明」?
- 5. 我可以根據條件禁用ViewCell.ContextActions
- 6. MVC控制器啓用禁用控件
- 7. AngularJS:我可以根據變量禁用表單控件嗎?
- 8. 使用WiX如何根據屬性更改禁用/啓用控件?
- 9. 可以根據條件啓用/禁用設計可鎖定模塊
- 10. 啓用禁用使用jquery的asp.net驗證控件
- 11. 根據div是否可見禁用和啓用文本框
- 12. 如何在AngularJS中啓用/禁用html控件驗證
- 13. 如何啓用禁用基於頁面控件的驗證器?
- 14. 允許根據用戶認證asp.net
- 15. 我可以使用.net控件父類來啓用/禁用它嗎?
- 16. 根據事件啓用和禁用鏈接jquery
- 17. 根據一定條件禁用和啓用按鈕
- 18. 根據某些條件啓用/禁用複選框
- 19. 如何根據某些條件禁用/啓用VisualState? (地鐵)
- 20. 根據條件設置JTable單元禁用或啓用?
- 21. 如何根據條件啓用或禁用腳本?
- 22. jQuery - 根據條件禁用並啓用錨標記
- 23. 在GridView中啓用/禁用鏈接按鈕根據條件
- 24. WPF Datagrid TemplateColumn控件啓用和禁用
- 25. 如何啓用/禁用一組控件?
- 26. 如何根據路徑獲取用戶控件的類型
- 27. 禁用許多控件自動
- 28. 根據構建配置禁用/啓用Azure啓動任務
- 29. 許可證模型
- 30. WPF啓用/禁用控制
嗨,建議你添加標籤'Infragistics到你的標籤。當然你不想顯示用戶不能使用的控件......假設給定的用戶許可證是不變的......?嗯......第二個想法,也許這是一種營銷技巧:讓用戶渴望他們不能使用的東西:)祝你好運, – BillW 2009-12-28 09:33:22
@Bill:「當然你不想顯示用戶不能使用的控件」。我認爲,他會完全相反:看,但不使用,如果沒有許可證;) – serhio 2009-12-28 10:12:23