2010-11-07 16 views
1

我从来没有遇到过需要尝试以下这样的路由,其中​​用户可以访问他人的主页或他们自己的主页(管理员)主页。下面是我的路线:ASP.NET MVC 2路由不能正确解析(或者说,我应该怎么看)

routes.MapRoute(null, "Home/Me", 
     new { controller = "Home", action = "Admin" }); 
    routes.MapRoute(null, "Home/{userID}", 
     new { controller = "Home", action = "Visitor" }); 

显然,我错误地认为“首页/ 6e982cc5-4d1d-4232-947b-835e54e49c7”将解决到主控制器上的下列行动:

public ActionResult Visitor(Guid userID) {} 

是否有人会善意解释为什么这不起作用,我认为它应该?

回答

1

假设下面的路线设置:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     null, 
     "Home/Me", 
     new { controller = "Home", action = "Admin" } 
    ); 

    routes.MapRoute(
     null, 
     "Home/{userID}", 
     new { controller = "Home", action = "Visitor" } 
    ); 

    routes.MapRoute(
     "Default", 
     "{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

Home/4将解析为Visitor行动Home控制器,但是默认的模型粘合剂将抛出一个异常,因为4不是一个Guid有效值。另一方面Home/6e982cc5-4d1d-4232-947b-835e54e49c7应该工作。 Home/Me将解析为Home控制器上的Admin操作。

+0

糟糕。在那里打字。我会解决这个问题。我会看看它为什么不解决问题。谢谢。 – asfsadf 2010-11-07 20:10:14

+0

哦,FFS,我只是意识到,我遗漏了我正在寻找的Html.ActionLink超载的最后一个“空”。让人惊讶。我需要回去睡觉。 – asfsadf 2010-11-07 20:17:20

+0

我应该删除这个问题吗?或者将其标记为答案,或者写出关于我在一个新答案中有多大的白痴的完整解释? – asfsadf 2010-11-07 20:18:16