Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller MVC2路由{Controller}.com/{action}/{id}-可能吗?_Model View Controller_Routing_Asp.net Mvc Routing - Fatal编程技术网

Model view controller MVC2路由{Controller}.com/{action}/{id}-可能吗?

Model view controller MVC2路由{Controller}.com/{action}/{id}-可能吗?,model-view-controller,routing,asp.net-mvc-routing,Model View Controller,Routing,Asp.net Mvc Routing,我们在内部服务器上托管了几个不同的域。它们都代表我们公司拥有的不同品牌,我们希望在每个领域之间进行集成,共享模型、视图、资源等 我想做的是将{Controller}作为实际的域,这样它看起来就像http://{Controller}.com/{Action}/{Id} 这可能吗?我见过人们用子域来做这件事 而且,它是否值得,或者是否有更简单的方法来实现同样的目标 如果是这样的话,有人对我如何在本地主机上测试这一点有什么建议吗?是的,这是可能的,与基于子域的路由并没有什么不同。如果你看,他看主机头

我们在内部服务器上托管了几个不同的域。它们都代表我们公司拥有的不同品牌,我们希望在每个领域之间进行集成,共享模型、视图、资源等

我想做的是将{Controller}作为实际的域,这样它看起来就像http://{Controller}.com/{Action}/{Id}

这可能吗?我见过人们用子域来做这件事

而且,它是否值得,或者是否有更简单的方法来实现同样的目标


如果是这样的话,有人对我如何在本地主机上测试这一点有什么建议吗?

是的,这是可能的,与基于子域的路由并没有什么不同。如果你看,他看
主机
头,在“.”上拆分,然后取数组中的第一个元素。您只需获取该数组中的第二个最后一个元素(因为“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上进行测试,您只需将要测试的域名添加到文件中,指向127.0.0.1即可