2011-09-16 15 views
0

私は非常に.netとmvc3に慣れています。mvc3とエンティティ - ロールに依存する基本クエリ

私のアプリでは、管理者と基本ユーザーという2つの異なる役割があります。管理者はすべてを見ることができますが、ユーザーは自分にリンクされているアイテムしか見ることができません。

私は私のコントローラでこれをやっている:

private MembershipExtContext db = new MembershipExtContext(); 
[Authorize] 
public ViewResult Index() 
    { 
     var thing1s = db.Thing1.Include(i => i.Thing2); 
     return View(thing1s.ToList()); 
    } 

私は基本的なクエリようにそれをしたいと思います(db.Thing1.Include(I => i.Thing2);)アイテムのみを返します現在のユーザーに表示させることができます。さもなければ、私はそれぞれの役割のために別のクエリを行う必要があります。

これは可能ですか?もしそうなら、どのように?

必要な場合は、まずmvc3とentity4コードを使用しています。これを行うには

答えて

0

一つの方法は次のようになり

if(Roles.IsUserInRole(User.Identity.Name, "Admin") 
{ 
    do stuff 
    return View(); 
} 
else 
{ 
    //do non admin stuff 
    return View(); 
} 

これは、あなたの管理者ユーザーが自分の役割では「管理者」と呼ばれているのを前提としていて、あなたは2つのだけのロールタイプを持っていること。

+0

はい。私はこれを知っている。しかし、それは私が求めていたものではありませんでした。私は、クエリの結果を変更したい。私のモデルやdbcontextなどのゲッターを編集するなど。そうすれば、コントローラの各機能にこのコードを記述する必要がなくなり、1つのことを変更するだけです。 – lovefaithswing

+0

あなたのデータベースはその役割について知っていますか?そうであれば、現在のユーザーロールに基づいてクエリ結果を制限することができます。それ以外の場合は、これを行う必要があります。それをモデルに配置することは、モデルがコントローラに緊密に結合されるため、適切な分離の問題ではありません。 – samack

関連する問題