【问题标题】:ASP.NET MVC 2 route not resolving properly (or, rather, how I think it should)ASP.NET MVC 2 路由无法正确解析(或者,我认为应该如何)
【发布时间】:2011-05-06 09:08:19
【问题描述】:

我从来没有遇到过需要尝试以下这样的路线,用户可以访问其他人的主页或他们自己的(管理员)主页。以下是我的路线:

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

显然我错误地认为“Home/6e982cc5-4d1d-4232-947b-835e54e49c7”将解析为 Home 控制器上的以下操作:

public ActionResult Visitor(Guid userID) {}

谁能解释一下为什么这不像我认为的那样有效?

【问题讨论】:

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


    【解决方案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 将解析为Home 控制器的Visitor 操作,但默认模型绑定器将引发异常,因为4 不是Guid 的有效值。

    另一方面,Home/6e982cc5-4d1d-4232-947b-835e54e49c7 应该可以工作。 Home/Me 将解析为 Admin 控制器上的 Admin 操作。

    【讨论】:

    • 糟糕。那里的错字。我会解决的。我也会看看为什么它没有解决。谢谢。
    • 哦,FFS,我刚刚意识到我遗漏了我正在寻找的 Html.ActionLink 重载中的最后一个“null”。哎呀。我需要回去睡觉了。
    • 我应该删除这个问题,还是将其标记为答案,或者在新答案中写下我有多白痴的完整解释?
    • 如果您认为我的回答以某种方式有所帮助,请将其标记为答案,以便以后遇到类似问题的其他人有用。如果您删除该问题,它将对任何人都没有用。
    猜你喜欢
    • 2014-11-14
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多