0

クライアントの 1 人のために MVC5 アプリケーションを開発しました。それは正常に動作します。現在、すべての機能が同じであるクライアントが増えていますが、クライアントごとにビューが異なります (レイアウトだけでなく、html 構造自体も各ビューで異なります)。

クライアントを区別するために私が行っていたのは、異なる URL を提供し、クライアント識別子を追加して (ログイン前でもクライアントを識別する必要があるため)、以下に示すようにRouteConfigでフィルタリングすることです。

routes.MapRoute("ClientRoute", "{client}/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = 
UrlParameter.Optional },
            new RouteValueDictionary 
            { 
                { "client", "icici|federal|pnb|sbi" }  
            });

ここで、icici、federal、pnb、および sbi が有効なクライアントです。

以下のコードを使用して、クライアント固有のロジックのクライアントを区別できます。

var clientName = HttpContext.Current.Request.RequestContext.RouteData.Values["client"].ToString();

私が望むのは、クライアントごとに個別のビューフォルダーを持つことです

  • ビュー (デフォルト、他の場所に見つからない場合はここから取得する必要があります)
  • ICICI_ビュー
  • SBI ビュー
  • FEDERAL_Views
  • PNB_Views
  • ....

これらのフォルダーには、レイアウト ファイルと cshtml ファイルが含まれます。return View()またはreturn View("viewname")を持つすべてのアクションは、対応するクライアント フォルダーから対応するビューを選択する必要があります。

これを実装するための解決策を誰かが知っている場合は、私を助けてください (RouteConfig または DisplayModeProvider クラスの構成など)。各リターンビューステートメントでif-elseチェックを行い、フルパスを指定したくありません。

前もって感謝します :)

4

1 に答える 1