我有一个多租户的应用程序,也就是说,我有多个客户端使用该应用程序并使用文件夹共享一个域。如下所示:
client1
/家/索引client2
/家/索引我无法使用区域,因为客户端不是静态的,它们会注册,并且必须能够立即开始使用该应用程序。我不能使用子域名,因为在这种情况下我没有动态控制DNS。
话虽如此,我如何实现自定义路由,以便每次构建传出URL时都不需要传递客户端名称?
也就是说,我希望这是真的:
@Url.Action("Index", "Home") -> www.mydomain.com/client1/home/index
没有传递client1
,有些东西可以解析client1
,因为在我构建此URL时,此字符串将是当前路由值的值,因为我已经在{{1 }}
我该怎么做?
答案 0 :(得分:5)
routes.MapRoute(
"Default",
"{client}/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
现在,当您使用时,导航到/client1/Home/Index
并在Index.cshtml
视图内导航时:
@Html.ActionLink("foo", "About")
这会产生:
<a href="/client1/home/About">foo</a>
在Url.Action
操作中使用Index
帮助程序也是如此。它将保留原始请求中的client
路由值。