ASP.Net MVC路由映射

Rya*_*ook 13 c# asp.net asp.net-mvc routing

我是MVC(和ASP.Net路由)的新手.我正在尝试将*.aspx映射到一个名为的控制器*.aspx.

routes.MapRoute(
   "Page",
   "{name}.aspx",
   new { controller = "Page", action = "Index", id = "" }
);
Run Code Online (Sandbox Code Playgroud)

上面的代码不会映射*.aspx PageController吗?当我运行它并输入任何.aspx页面时,我收到以下错误:

无法找到路径"/Page.aspx"的控制器,或者它没有实现IController接口.参数名称:controllerType

有什么我不在这里做的吗?

Rya*_*ook 6

我刚回答了自己的问题.我向后退了路线(默认在页面上方).以下是正确的订单.所以这就提出了下一个问题......"默认"路由如何匹配(我假设它们在这里使用正则表达式)"Page"路由?

routes.MapRoute(
            "Page",
            "{Name}.aspx",
            new { controller = "Page", action = "Display", id = "" }
        );

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );
Run Code Online (Sandbox Code Playgroud)


Dal*_*gan 6

我刚回答了自己的问题.我向后退了路线(默认在页面上方).

是的,您必须将所有自定义路由放在默认路由之上.

所以这就提出了下一个问题......"默认"路由如何匹配(我假设它们在这里使用正则表达式)"Page"路由?

默认路由根据我们称之为约定优于配置的内容进行匹配.Scott Guthrie在他关于ASP.NET MVC的第一篇博文中很好地解释了这一点.我建议你仔细阅读它以及其他帖子.请记住,这些是基于第一个CTP发布的,并且框架已经更改.您还可以在Scott Hanselman的asp.net网站上找到ASP.NET MVC上的网络广播.