2010-12-02 4 views
2

ログインしたユーザーが次の3つの条件のいずれかを満たしている場合にのみ、表示したいページの部分があります。ログインしているユーザーの複数の状態を確認するにはどうすればよいですか?例えば、ユーザーが記事の著者であるか特定の役割に属している場合

  1. 彼は著者です
  2. 彼は 'エディター'ロールに属しています。
  3. 彼は '管理者'ロールに属しています。

オブジェクトモデルはAddedByというプロパティが含まれています(Model.AddedBy

どのように私はASP.NET MVCページのすべての3つの条件を確認することができます。

これまでのところ、私は以下のコード

<%if((Page.User.Identity.Name == Model.AddedBy) || 
    (Page.User.IsInRole("Admin")) || 
    (Page.User.IsInRole("Editors"))){%> 

    //Display this portion of page... 

<%}%> 

を試してみた。しかし、私のコードは、違いに気付くように見えるし、上記のコード内で囲まれたHTMLの一部を表示し続けることはありません。

どこか間違っている必要があります。

EDIT

コードで囲まれたHTML部分は、などのボタンは、記事の編集記事を削除します記事を追加、コメントを許可する、...だから記事の唯一の著者が参照することになっている含まれていそれらのボタンまたはチェックボックス。編集者ロールまたは管理者ロールのユーザーを除いて、所有していない記事を操作することもできます。彼は、(i)著者または(II)編集者役割または(III)管理役割にに属している場合

その方法は、ページにアクセスするユーザーには、その部分を見ることができます。

+1

あなたの条件がより明確に反映されるように質問を編集しました。あなたのコードは私にとっては正しいので、次のステップはそれをデバッグすることです。それはあなたのModel.AddedByをコントローラの現在のユーザに設定するような何かをしているのですか?これはいつも正しいですか?私はブレークポイントを置いて、値が何であるかを見て、あなたが期待しているものかどうかを見ます。あなたが期待していないものを見つけたら、あなたの問題を見つけるでしょう。 –

+0

AddedByが常に空の文字列であることがわかった(デバッグによって)。私はそれを修正した後、すべて正常に動作します。実際、私は最初に私が条件を正しく書いていないと思った。どうもありがとう。 – Richard77

答えて

2

EDITを支援するための

ありがとう:OPによる質問を明確にした後、ORが使用されてしなければならない状態だった、と問題は、古き良き伝統的なデバッグで解決したことと思われます!ハレイ!コメントは意味をなさせるために以下の内容が残されていますが、変更された質問にはまだ答えません。あなたがしていないこれらの条件の状態であればANYが満たされている場合(ORで使用している||)しようとしているので、まだ

...いつかしかし、誰かの役に立つかもしれないと、それをですあなたの質問は、あなたが望む意味するもので、これらの条件(あなたがある& &を使用したい)のALL、?

私はこれが何をしたいあなたを与えるべきだと思う:

<%if((Page.User.Identity.Name == Model.AddedBy) && 
    (Page.User.IsInRole("Admin")) && 
    (Page.User.IsInRole("Editors"))){%> 

    //Display this portion of page... 

<%}%> 

を単一&を使用するだけでなく、私は思うが、それを評価しようとしませんよう、二重& &を使用すると、わずかに、より効率的になります動作しますそれ以降の条件が偽であると判明した場合(したがって、最も頻繁に偽である条件をif文の最初のチェックとすることは意味をなさない)

この文書は便利です。&& Operatorおよび|| Operator

+0

私の投稿がそのように理解されていれば申し訳ありません。実際には、条件の少なくとも1つが満たされているかどうかを確認したいと思います。編集を参照してください – Richard77

+1

どのような編集? if文にブレークポイントを入れて、それが期待されないときに条件が真であることを確認するのはなぜですか? –

+1

+1は、分析とデバッグのスキルを示唆しています。 if条件にブレークポイントを設定するには、F9を使用します。アプリケーションはその行でデバッグモードに入り、ファイルをマウスで移動すると、値 – swapneel

関連する問題