我是MVC(和ASP.Net路由)的新手.我正在尝试将*.aspx映射到一个名为的控制器*.aspx
.
routes.MapRoute( "Page", "{name}.aspx", new { controller = "Page", action = "Index", id = "" } );
上面的代码不会映射*.aspx PageController
吗?当我运行它并输入任何.aspx页面时,我收到以下错误:
无法找到路径"/Page.aspx"的控制器,或者它没有实现IController接口.参数名称:controllerType
有什么我不在这里做的吗?
我刚回答了自己的问题.我向后退了路线(默认在页面上方).以下是正确的订单.所以这就提出了下一个问题......"默认"路由如何匹配(我假设它们在这里使用正则表达式)"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 );
我刚回答了自己的问题.我向后退了路线(默认在页面上方).
是的,您必须将所有自定义路由放在默认路由之上.
所以这就提出了下一个问题......"默认"路由如何匹配(我假设它们在这里使用正则表达式)"Page"路由?
默认路由根据我们称之为约定优于配置的内容进行匹配.Scott Guthrie在他关于ASP.NET MVC的第一篇博文中很好地解释了这一点.我建议你仔细阅读它以及其他帖子.请记住,这些是基于第一个CTP发布的,并且框架已经更改.您还可以在Scott Hanselman的asp.net网站上找到ASP.NET MVC上的网络广播.
http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx
http://www.asp.net/MVC/