2016-05-19 17 views
-1

次の問題に直面しました。私たちはシステムのためのログイン後のページのセットを開発しました。ユーザーは、フリーユーザータイプ1、プレミアムユーザータイプ1、フリーユーザータイプ2、プレミアムユーザータイプ2、および管理者の5つの役割のいずれかを持つことができます。 問題は、これらのロールのすべてのページがほぼ同じに見えるはずですが、ユーザーロールによっては少し異なります(たとえば、リンクが異なるURLを指している、またはボタンがクリックされたときに別のモーダルが表示され、一部のオプションが表示され、一部は非表示になります)。 私たちがやろうとしているのは、すべてを小さな部分的なビューで包み込み、ユーザーの役割に応じて異なる部分的なビューをレンダリングすることです。しかし、それはますます複雑になります。 この問題に対処するためのデザインパターンや一般的なアプローチがありますか? ありがとう!ASP.NET MVC。ユーザーロールに基づいてRazorビューを生成する

+0

を取得http://stackoverflow.com/questions/9838766/how-do-i-implement-a-custom-razorviewengine-to-find -views-in-non-standard-locati)を参照してください。これには、ユーザー切り替えロジックが含まれている可能性があります。 – Liam

答えて

0

あなたの説明に基づいていますが、100%明確ではないというのは、さまざまな役割に対して異なる部分的なビューを作成するのが最善の方法だと思われます。

次に、ログイン時にDBからユーザーロールを取得し、そのロールに基づいてさまざまな部分ビューを返します。

パーシャルビューが複数ある場合(ユーザーロールごとに複数のページがある場合)、ユーザーロールをセッションまたはCookieに追加して、再度DBにヒットする必要はありません。

この場合、Cookieのアプローチを使用することをおすすめします。

設定されたセッション

var userRole = 1; 

Session["UserRole"] = userRole; 

セッションを取得:

var userRole = Session["UserRole"] as int?; 

セットクッキー

var cookie = new HttpCookie("UserRole"); 
      cookie.Value = GetUserRole(); 
      cookie.Expires = DateTime.Now.AddDays(1); 
      HttpContext.Current.Response.Cookies.Add(cookie); 

(あなたは[カスタムかみそりビューエンジン]を実装することができクッキー

if (HttpContext.Current.Request.Cookies["UserRole"] != null) 
{ 
    var userRole = HttpContext.Current.Request.Cookies["UserRole"].Value); 
} 
関連する問題