0

我为我们的一个客户开发了一个 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();

我想要的是为每个客户提供单独的 View 文件夹

  • 视图(默认,如果在其他位置找不到,则应从此处获取)
  • ICICI_Views
  • SBI_Views
  • FEDERAL_Views
  • PNB_Views
  • ……

这些文件夹将包含布局和 cshtml 文件。任何具有return View()return View("viewname")的操作都应从受尊重的客户端文件夹中选择相应的视图。

如果有人知道实现此功能的任何解决方案(例如配置 RouteConfig 或 DisplayModeProvider 类等),请帮助我。我不想在每个返回视图语句中进行 if-else 检查并指定完整路径。

提前致谢 :)

4

1 回答 1

0

从action方法返回时可以指定视图的路径,例如如果客户端是ICICI则返回View("~/ICICI_Views/Home/Index.cshtml"); 如果没有找到客户,您可以使用return View();

return View("~/ICICI_Views/Home/Index.cshtml");
于 2018-11-14T07:45:54.060 回答