我的网站最初是针对单个客户的客户,但现在正在调整以服务于多个客户的客户。由于该站点可以匿名使用(身份验证提供增强功能但不需要使用该站点),因此我需要能够通过访问某个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
);