2009-07-13 9 views
1

ボタンが有効になる前にユーザーが持つ必要がある権限を定義するために使用するUserRightsというプロパティを作成したボタンユーザーコントロールがあります。これらの権利は、UserRightというクラスのパブリック定数として定義されています(私はいくつかの特別なコード設計の理由からEnumを使用しません)。 だから、私はachiveしたいことは、このされています。今、UserRightsプロパティは、次のように実装されているユーザーコントロールのプロパティに値のリストを割り当てる

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

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

そのため、私はこのように実行する必要があります。

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

最初の例で述べたように私が望むものを達成することは可能ですか?彼らは列挙型でない場合でも

-

敬具 ヘンリク

答えて

0

は(いや、私が知っていないことを構文が提案されている再) - 彼らはフラグをビット単位していますか? intプロパティを持ち、UserRight.Create | UserRight.Modifyを使用して、プロパティsetterにコンポーネントビットにビットを渡すことができます。

しかし、[Flags]列挙型の方がずっと簡単です。私はそれらの理由が何であるか興味を持っています...あなたがオブジェクト/文字列を使用していればそれでいいですが、int ...あなたがそれを「簡単な」方法で使用できるトリックがあるのだろうかと思います。

+0

私がEnumを使用していないのは、アプリケーションが4-5のサブアプリケーションで構成されているためです。そのため、ユーザー権利で継承を使用したいので、「グローバル」権限を再利用することができます。サブアプリケーション。非常に多くの権利がある可能性があるので、ビットごとのフラグを使用することは維持するのが難しいと私は思います。 –

+0

何とか文字列を解析して変換するそれは反射か? –

+0

もちろん、**手動で**反射を使って文字列として解析することもできます....簡単ではありません。 –

0

複合コントロールレベル(コントロールがあるページやページが属するページなどの上位レベルから渡される)で、ボタンの状態と全体のアクションロジックを処理する必要があると思います。

+0

ボタンは再利用可能で自己完結型なので、ボタンを含むページやコントロールに依存せずに再利用することができます。それは悪いデザインですか? –

+0

これは確かに非常にスマートなボタンになります。私はボタンがスマートであるとは決して考えていませんでした:Dあなたの要求に本当に依存しますが、データがロードされたフォームと無効なボタンをユーザーに提示する理由は何ですか? – user134706

+0

一部のフォームは、異なる役割と異なる権限で異なるユーザーに表示されます。一部のユーザーには読み取り専用権限があり、その場合は保存ボタンを無効にする必要があります。 –

関連する問題