“重载”MVC路由?

时间:2012-07-19 13:45:01

标签: asp.net-mvc-3 asp.net-mvc-routing

我正在使用ASP.NET MVC路由根据某些单词来引导流量,例如mydomain.com/support指向支持页面(在Home控制器下),或默认情况下为mydomain.com/controller/action/id。 / p>

但是,我还希望流量能够在gTLD之后使用任何单词 - 我还没有指定 - 来点击我的主页。

例如:mydomain.com/anything仍会点击我的主页,而不会产生404响应。其中任何是除了我已经指定的任何单词之外的任何单词(在本例中为“support”)。

这甚至可能吗?

2 个答案:

答案 0 :(得分:0)

你这样做的事情不是吗?

routes.MapRoute(
  "MyRoute",
  "{word}.aspx",
    new { 
      controller = "Home",
      action = "Index"
  }  // Parameter defaults
);

并更新您的操作(在这种情况下索引,以获得参数)。

答案 1 :(得分:0)

我不确定你为什么要这样做,因为这样你最终可能会被搜索引擎索引很多请求。

routes.MapRoute(
  "MyRoute",
  "{anything}",
  new { controller = "Home", action = "Index" }
);

此路线应该在默认路线之后。

如果您希望家庭控制器仍然可以处理此类请求http://mydomain.com/anything/otherthing/another,那么您必须尝试,

routes.MapRoute(
  "CatchAllRoute",
  "{*anything}",
  new { controller = "Home", action = "Index" }
);