2009-12-28 2 views
0

J'ai un .NET 2.0, application avec plusieurs types de Contrôles (cases à cocher, Boutons, etc.), que j'ai besoin de Activer ou de Désactiver selon le type de Licence que l'utilisateur a acheté . Je me demande s'il existe un moyen de le prendre en charge en tant qu'aspect, comme utiliser Injection ou un proxy qui peut intercepter l'appel à Enable ou d'autres propriétés du contrôle, et la logique désirée peut y être ajoutée. Si c'est important, j'utilise les contrôles Infragistics. Avez-vous d'autres idées à propos de ce problème? Autres approches/modèles? MerciActiver/Désactiver les contrôles selon le type de licence

+0

Bonjour, suggérez d'ajouter le tag 'Infragistics à vos tags. Vous ne voudriez sûrement pas afficher les contrôles que l'utilisateur ne peut pas utiliser ... en supposant que la licence d'un utilisateur donné est invariante ...? mmmm ... à la réflexion, peut-être que c'est une technique de marketing: rendre l'utilisateur affamé pour ce qu'ils ne peuvent pas utiliser :) bonne chance, – BillW

+0

@Bill: "Sûrement vous ne voulez pas afficher les contrôles que l'utilisateur ne peut pas utiliser ". Je pense, il ferait exactement l'inverse: voir, mais pas utiliser, si aucune licence;) – serhio

Répondre

1

Vous pouvez créer un attribut personnalisé pour décorer les contrôles avec, puis faire une boucle récursive sur tous vos contrôles et vérifier que cet attribut permet de définir l'état souhaité.

+0

En guise de suite à cette réponse, au lieu de décorer les contrôles (ce qui ne serait pas possible avec les contrôles intégrés ... Checkbox , Button, etc.), pourquoi ne pas créer un attribut personnalisé pour décorer la classe Page avec. Par exemple, un attribut quelque chose comme le suivant: '[RequiresLicense (LicenseType.Developer," btnButton1 "," cbCheckbox1 ")] public partielle classe MyPage: Page de base {' Dans votre classe 'BasePage' vous pourriez alors lire ces attributs personnalisés et masquer/désactiver les contrôles comme spécifié. – WayneC

+0

Vous pouvez ajouter des attributs dans le fichier * .designer.cs, mais ils seront supprimés lorsque vous ajoutez ou modifiez les contrôles. Donc, votre solution est probablement meilleure dans la vraie vie :) –

0

n'est-il pas possible de le faire dans l'événement Form_Load()?

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

Ajoutez un attribut supplémentaire à chaque contrôle que vous souhaitez protéger. Quelque chose comme ...

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

Si je me souviens bien, ASP.NET vous permet d'ajouter des attributs non définis aux contrôles, qui seront disponibles dans la propriété Attributs du contrôle. Ensuite, dans l'initialisation de votre classe BasePage (PreRender, PageLoad, etc.), vous pouvez parcourir de manière récursive les contrôles de la page et rechercher les contrôles ayant l'attribut "RequiredLicense" et masquer ou désactiver si nécessaire.

0

Merci pour toutes les réponses. Je pense que ma question n'était pas claire puisque je n'étais pas sûr de ce que je cherchais. La réponse à ce que je cherchais: Mon application est écrite en utilisant le framework CAB. Afin d'activer/désactiver les contrôles dans l'application en fonction du paquet vendu, j'utiliserai le patron de commande tel qu'il est implémenté dans le SCFS. Merci

Questions connexes