用于多租户应用程序的MVC路由

时间:2014-10-03 14:46:23

标签: asp.net-mvc asp.net-mvc-4 routes

我有一个MVC应用程序,无法让我的多租户应用程序的路由工作正常。这是问题所在:

我的应用程序中有两种类型的页面,大多数要求租户名称在URL中,但有些则不需要。 e.g。

这些Do(租户名称是这些例子是三星和苹果):

http://www.mytestapp.com/samsung/customers/add

http://www.mytestapp.com/apple/customers/add

这些不要:

http://www.mytestapp.com/home/register/

http://www.mytestapp.com/home/aboutus/

我需要哪些路线才能使其正常工作?我已经尝试了这个,但它不适用于寄存器和关于我们的页面。

            routes.MapRoute(
            name: "TenantRoute",
            url: "{tenantid}/{controller}/{action}/{id}",
            defaults: new { tenantid = "tenantname", controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

2 个答案:

答案 0 :(得分:0)

那么,您需要第二条路线来匹配非租户路线。如果registeraboutus是具有Index操作的控制器,则默认值应匹配:

  routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Register", action = "Index", id = UrlParameter.Optional }
        );

答案 1 :(得分:0)

试试这个

   routes.MapRoute(
            "samsung",
            "samsung/{controller}/{action}/{id}",
           new { controller = "YourController", action = "YourAction", id = UrlParameter.Optional}
        );

        routes.MapRoute(
            "apple",
            "apple/{controller}/{action}/{id}",
            new { controller = "YourController", action = "YourAction", id = UrlParameter.Optional }
        );
  routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Register", action = "Index", id = UrlParameter.Optional }
    );