ASP.Net MVC的前端版本控制

时间:2016-11-17 09:57:08

标签: asp.net asp.net-mvc asp.net-mvc-4 razor versioning

我们有一个在ASP.NET MVC上运行的企业应用程序。我们最近开始改进应用程序的完整UI。现在,当我说UI时,它不是简单的CSS,我可以把它放在一个单独的文件夹中并动态加载。基本上,完整的导航结构,布局元素,现在一切都在改进。但是,整体代码(控制器,模型)在这里和那里仍然有一些小的改进。现在,我们应该推出改进的UI,但同时也支持并行的旧UI。

目标是运行新的用户界面,如appURL/v2/其他视图网址保持不变。

现在,我们的目标是我们不应该将控制器,模型复制到另一个项目中。

那么,基于URL中版本的/v2/标识符,在整个应用程序中为全局提供不同视图的最佳方法是什么?

1 个答案:

答案 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" }
    );

使用此构造,两个路由都将在同一名称空间中查找控制器。