C# MVC 4具有不同视图文件夹的相同逻辑

C# MVC 4具有不同视图文件夹的相同逻辑,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我是MVC新手,从MVC4开始。我想申请网上购物 -两个不同的网站/域将使用相同的购物逻辑 -视图必须根据域名及其移动版本进行更改 逻辑文件结构如下所示: Controllers/HomeController.cs Controllers/ProductController.cs Models/Home.cs Models/Product.cs 查看第一个域的文件结构: Views/my_1st_Domain/Home/Index.cshtml Views/my_1st_Domain/Home

我是MVC新手,从MVC4开始。我想申请网上购物

-两个不同的网站/域将使用相同的购物逻辑

-视图必须根据域名及其移动版本进行更改

逻辑文件结构如下所示:

Controllers/HomeController.cs
Controllers/ProductController.cs
Models/Home.cs
Models/Product.cs
查看第一个域的文件结构:

Views/my_1st_Domain/Home/Index.cshtml
Views/my_1st_Domain/Home/Index.Mobile.cshtml
Views/my_1st_Domain/Home/Terms.cshtml
Views/my_1st_Domain/Home/Terms.Mobile.cshtml
Views/my_1st_Domain/Product/Index.cshtml
Views/my_1st_Domain/Product/Index.Mobile.cshtml
Views/my_1st_Domain/Product/Detail.cshtml
Views/my_1st_Domain/Product/Detail.Mobile.cshtml
查看第二个域的文件结构:

Views/my_2nd_Domain/Home/Index.cshtml
Views/my_2nd_Domain/Home/Index.Mobile.cshtml
Views/my_2nd_Domain/Home/Terms.cshtml
Views/my_2nd_Domain/Home/Terms.Mobile.cshtml
Views/my_2nd_Domain/Product/Index.cshtml
Views/my_2nd_Domain/Product/Index.Mobile.cshtml
Views/my_2nd_Domain/Product/Detail.cshtml
Views/my_2nd_Domain/Product/Detail.Mobile.cshtml
问题是: 如何在特定于域的视图文件夹之间自动切换

可以通过在任何地方重复这一行手动完成:

return View("~/Views/" + getDomainSpecificFolder() + "/Home/Index" + getMobileSuffixIfNeeded() + ".cshtml");
有没有更简单的方法可以一次性全局更改基本视图文件夹


提前感谢,

您可以创建自己的ViewEngine,并根据当前域返回特定视图。 在控制器代码中,您只需要返回通常的

return View();
所有逻辑都将在自定义ViewEngine中处理

这里有一些细节-

基本上,您需要创建
CustomViewEngine
类,该类继承并在
global.asax
中注册它。然后在该类中,您需要覆盖方法,该方法将使用基于视图的域的路径