クライアントの 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チェックを行い、フルパスを指定したくありません。
前もって感謝します :)