我们有一个在ASP.NET MVC上运行的企业应用程序。我们最近开始改进应用程序的完整UI。现在,当我说UI时,它不是简单的CSS,我可以把它放在一个单独的文件夹中并动态加载。基本上,完整的导航结构,布局元素,现在一切都在改进。但是,整体代码(控制器,模型)在这里和那里仍然有一些小的改进。现在,我们应该推出改进的UI,但同时也支持并行的旧UI。
目标是运行新的用户界面,如appURL/v2/
其他视图网址保持不变。
现在,我们的目标是我们不应该将控制器,模型复制到另一个项目中。
那么,基于URL中版本的/v2/
标识符,在整个应用程序中为全局提供不同视图的最佳方法是什么?
答案 0 :(得分:2)
使用区域可以使用相同的控制器提供不同的视图。因此,您创建一个具有自己视图的“v2”区域,并相应地将请求路由到“v2”:
routes.MapRoute(
"v2_default",
"v2/{controller}/{action}/{id}",
new { area = "v2", controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "YourNamespace.Controllers" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { area = "", controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "YourNamespace.Controllers" }
);
使用此构造,两个路由都将在同一名称空间中查找控制器。