2009-12-28 46 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中实现的命令模式。 谢谢

相关问题