Asp.net mvc 2 NETMVC路由混乱

Asp.net mvc 2 NETMVC路由混乱,asp.net-mvc-2,routes,Asp.net Mvc 2,Routes,我的ASP.Net MVC 2站点有以下URL: http://localhost:1919/TimeEntry/SummaryForWeek/15/2011 http://localhost:1919/TimeEntry/SummaryForMonth/4/2011 这两条路线都是如此: routes.MapRoute ( "TimeEntryActionMonthYear", // Route name

我的ASP.Net MVC 2站点有以下URL:

http://localhost:1919/TimeEntry/SummaryForWeek/15/2011

http://localhost:1919/TimeEntry/SummaryForMonth/4/2011
这两条路线都是如此:

            routes.MapRoute
        (
            "TimeEntryActionMonthYear", // Route name
            "TimeEntry/{action}/{month}/{year}", // URL with parameters
            new { controller = "TimeEntry", action = "Summary", month = UrlParameter.Optional, year = UrlParameter.Optional } // Parameter defaults
        );
SummaryForWeek的操作需要一个名为“weekNumber”的参数(上面URL中的15值),而正在使用的路由正在传递一个名为“month”的参数,因此weekSummary的URL失败。将SummaryForWeek的参数从一周重命名为另一个月是没有意义的,只是为了让路由正常工作

我是否应该在路由表中添加一个路由,其中{action}被硬编码为“SummaryForWeeks”?这也没有意义,因为它会使路由表膨胀

我不明白的是什么(我知道这让我有了一些创造性的评论)?我卡住了

谢谢


Tom

您要么需要两条路线,要么需要一个更通用的参数名称:

TimeEntry/{action}/{subdivision}/{year}

或者类似的东西。然后两个动作都必须采用这两个参数,一个解释为月,另一个解释为周。

我认为这是我必须采取的路线。这真是糟透了。处理器应该能够从URL中识别动作,在控制器中找到动作,然后开始按照参数在URL中出现的顺序与动作的参数签名进行匹配。这样,您就不必担心命名问题。这是错误的看法吗?感谢您的帮助。绑定问题: