我有一个.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. MVC控制器启用禁用控件
- 4. 使用WiX如何根据属性更改禁用/启用控件?
- 5. 可以根据条件启用/禁用设计可锁定模块
- 6. 启用禁用使用jquery的asp.net验证控件
- 7. 如何在AngularJS中启用/禁用html控件验证
- 8. 允许根据用户认证asp.net
- 9. 我可以使用.net控件父类来启用/禁用它吗?
- 10. 如何根据某些条件禁用/启用VisualState? (地铁)
- 11. 如何根据条件启用或禁用脚本?
- 12. 根据某些条件启用/禁用复选框
- 13. 如何根据路径获取用户控件的类型
- 14. WPF启用/禁用控制
- 15. 许可证模型
- 16. 允许用户启用/禁用选项
- 17. 基于条件禁用验证控件
- 18. 在许可证到期时禁用eclipse插件?
- 19. 许可证软件,使用非GPL许可证的GPL代码
- 20. 启用/禁用GUI控件将禁用我的OnMouseWheel覆盖
- 21. ActionBarSherlock是否允许启用/禁用ActionBar.Tab?
- 22. 基于WPF中多个控件的值启用/禁用控件
- 23. 如何根据艺术许可证2正确授权软件
- 24. 如何根据Android上网的可用性启用和禁用登录按钮?
- 25. 用户控件和强类型数据
- 26. 根据用户选择启用和禁用单选按钮
- 27. 如何根据用户角色启用和禁用按钮?
- 28. ASP.NET MVC根据业务规则禁用/隐藏控件
- 29. 如何根据域对象的状态禁用UI控件?
- 30. 使用jQuery在特定“ValidationGroup”中启用/禁用asp.net验证器控件?
嗨,建议你添加标签'Infragistics到你的标签。当然你不想显示用户不能使用的控件......假设给定的用户许可证是不变的......?嗯......第二个想法,也许这是一种营销技巧:让用户渴望他们不能使用的东西:)祝你好运, – BillW 2009-12-28 09:33:22
@Bill:“当然你不想显示用户不能使用的控件”。我认为,他会完全相反:看,但不使用,如果没有许可证;) – serhio 2009-12-28 10:12:23