2009-07-13 8 views
1

Ich habe eine Schaltfläche Benutzersteuerelement, auf dem ich eine Eigenschaft erstellt habe, UserRights, mit denen ich die Rechte definieren, die ein Benutzer haben muss, bevor die Schaltfläche aktiviert ist. Diese Rechte sind als öffentliche Konstanten in einer Klasse namens UserRight definiert (ich verwende Enum für einige spezielle Code-Design-Gründe nicht). Also, was ich möchte, ist achive dies:Zuweisen von Werteliste zu Benutzersteuerungseigenschaft

<hmk:Button Id="BtnSave" UserRights='<%#UserRight.Create, UserRight.Modify%>' ... runat="server" /> 

Gerade jetzt, die Benutzerrechte Eigenschaft als implementiert:

public List<int> UserRights {get; set; } 

Und deshalb, ich brauche wie dies zu tun:

<hmk:Button Id="BtnSave" UserRights='<%#new List<int> {UserRight.Create, UserRight.Modify }%>' ... runat="server" /> 

Ist es möglich zu erreichen, was ich will, wie im ersten Beispiel angegeben?

Mit freundlichen Grüßen Henrik

Antwort

0

(re die Syntax vorgeschlagen - nein, nicht dass ich wüsste)

Auch wenn sie nicht Aufzählungen sind - sind sie Fahnen bitweise? Sie könnten eine int-Eigenschaft haben und UserRight.Create | UserRight.Modify verwenden, und der Property-Setter muss die Bits in die Komponenten-Flags zerlegen.

Aber es wäre viel einfacher mit einem [Flags] enum. Ich wäre daran interessiert, was diese Gründe sind ... wenn Sie ein Objekt/String verwenden würden, dann in Ordnung - aber mit einer int ... Ich frage mich, ob es einen Trick gibt, der Sie den "einfachen" Weg verwenden könnte .

+0

Der Grund, warum ich Enum nicht benutze, ist, dass die Anwendungen aus 4-5 Unteranwendungen bestehen. Daher möchten wir die Vererbung in den Benutzerrechten verwenden, die die Wiederverwendung von "globalen" Rechten ermöglicht die Unteranwendungen. Es kann ziemlich viele Rechte geben, daher wird es schwierig sein, bitweise Flags zu verwenden, denke ich. –

+0

Wäre es möglich, dies stattdessen zu tun: und irgendwie die Zeichenfolge analysieren und konvertieren es mit Reflexion oder? –

+0

Sicher, Sie könnten es manuell ** als String ** mit Reflektion analysieren ... aber nicht einfach. –

0

Ich denke, Sie sollten Ihre Schaltfläche Status und Gesamtaktionslogik auf der Composite-Kontrollebene (die von einer höheren Ebene wie die Seite, auf der das Steuerelement ist, oder der Teil Ihrer Website die Seite gehört) behandelt.

+0

Wir möchten, dass die Schaltflächen wiederverwendbar und eigenständig sind, sodass wir sie wiederverwenden können, ohne von den verschiedenen Seiten/Steuerelementen, die sie enthalten, abhängig zu sein. Ist das ein schlechtes Design? –

+0

Das wäre in der Tat ein sehr intelligenter Knopf. Ich habe nie daran gedacht, dass Schaltflächen intelligent sind: D Es hängt wirklich von Ihren Anforderungen ab, aber warum würden Sie den Benutzern ein Formular mit Daten und einer deaktivierten Schaltfläche präsentieren? – user134706

+0

Einige Formulare werden verschiedenen Benutzern mit unterschiedlichen Rollen und damit unterschiedlichen Rechten angezeigt. Einige Benutzer haben Lese-Rechte und in diesem Fall sollte eine Schaltfläche zum Speichern deaktiviert werden –