2011-05-01 74 views
0

我有行动称为联系家庭控制器ASP.NET MVC 3.0网址Rewritng

<mysite>/Home/Contact 

我希望能够通过键入<mysite>/Contact得到相同的结果<mysite>/Home/Contact

是否有可能做mvc 3.0路由或RouteMagic?

目前,我试图做到这一点像,但没有运气:

自定义路线:

routes.MapRoute(
       "Contact", // Route name 
       "Contact", // URL with parameters 
       new { controller = "Home", action = "Contact", id = UrlParameter.Optional } // Parameter defaults 
      ); 

RouteMagic:

var route = routes.MapRoute("new", "Contact"); 
      routes.Redirect(r => r.MapRoute("old", "Home/Contact")) 
       .To(route); 

更新

好的自定义路线应该先定义,现在它正在工作(在定制路线的情况下),但在那里我s出现了一个新的问题why route magic returning error

Server Error in '/' Application. 
Value cannot be null or empty. 
Parameter name: controllerName 

回答

1

确保你的新路线定义路由时,缺省路由之前发生(因为它会匹配以及)。

routes.MapRoute(
    "Contact", // Route name 
    "contact", // URL with parameters 
    new { controller = "Home", action = "Contact", id = UrlParameter.Optional } // Parameter defaults 
); 

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Contact", id = UrlParameter.Optional } // Parameter defaults 
); 
+0

谢谢,我曾经想过,但有点懒得去尝试。 – Joper 2011-05-01 13:51:22

+0

@Joper - 默认路由应该是最后添加的路由,以便首先匹配任何特定的路由。 – tvanfosson 2011-05-01 13:55:56

+0

可能你有任何想法,为什么RouteMagic在这种情况下返回错误'值不能为空或空。 参数名称:controllerName' – Joper 2011-05-01 14:02:46