【问题标题】:MVC 2 Routing - {Controller}.com/{action}/{id} - Is it Possible?MVC 2 路由 - {Controller}.com/{action}/{id} - 可能吗?
【发布时间】:2010-12-05 02:41:17
【问题描述】:
我们在内部服务器上托管了多个不同的域。它们都代表我们公司拥有的不同品牌,我们希望在每个领域之间进行整合,共享模型、视图、资源等。
我想做的是将 {Controller} 作为实际域,因此它看起来像 http://{Controller}.com/{Action}/{Id}。
这可能吗?我见过有人用子域来做。
并且,是否值得或有更简单的方法来完成同样的事情。
如果是这样,有人对我如何在 Localhost 上进行测试有任何建议吗?
【问题讨论】:
标签:
model-view-controller
routing
asp.net-mvc-routing
【解决方案1】:
是的,这可能与基于子域的路由并没有什么不同。如果您查看this example,他会查看Host 标头,并在“。”上拆分。然后取数组中的第一个元素。您只需获取该数组中的倒数第二个元素(因为“com”是最后一个元素)。基本上,在您的 GetRouteData 覆盖中,您可以执行以下操作:
// Retrieve the url - and split by dots:
var url = httpContext.Request.Headers["HOST"];
var urlParts = url.Split(".");
var routeData = new RouteData(this, new MvcRouteHandler());
routeData.Values.Add("controller", urlParts[urlParts.Count - 2]);
(显然这里不包括错误检查和验证)
至于在 localhost 上进行测试,您只需将要测试的域名添加到您的 hosts 文件中,指向 127.0.0.1。