ASP.NET MVC 3:使用Global.asax MapRoutes将单客户端站点迁移到多客户端站点?

时间:2014-02-21 17:58:20

标签: asp.net-mvc-3

我的网站最初是针对单个客户的客户,但现在正在调整以服务于多个客户的客户。由于该站点可以匿名使用(身份验证提供增强功能但不需要使用该站点),因此我需要能够通过访问某个URL来设置“公司ID”。

为了实现这一目标,我在我的global.asax中添加了一个MapRoute,并使用它在特定公司的页面登陆时在会话中设置公司ID(例如http://sitename.com/Companies/BurgerHeaven)。在那里,我的SetCompany操作在会话中设置公司ID,然后传递到默认的主页/索引视图。所有后续页面都回退到默认的{controller} / {action} / {id}路由,并且会话中存储的公司ID允许相应地设置UI和其他自定义。这非常有效,除非用户在会话过期后尝试执行某些操作,该站点不再知道公司ID并回退到其默认UI和设置。

如果我要更改公司/ {CompanyID} / {controller} / {action} / {id}的默认路由并相应更改我的所有操作的网址,这会有效吗?有更好的方法吗?

        routes.MapRoute(
            "Companies",
            "Companies/{CompanyID}",
            new { controller = "Home", action = "SetCompany" }
        );

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

0 个答案:

没有答案