mvc路由和webforms页面

问题描述:

一些背景: 我创建了一个新的ASP.NET MVC 3 WebApplication。 然后我添加Web表单页面:~/ASPWebforms/Test.aspx 然后我编辑路由在Global.asax文件是这样的:mvc路由和webforms页面

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapPageRoute("Test", "Test/", "~/ASPWebforms/Test.aspx"); 
    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

现在我在浏览器中键入http://localhost:54847/Test,一切都按预期工作。

的问题是,所有其他链接看起来像:http://localhost:54847/Test?action=Index&controller=Home

我也试图改变路线的顺序:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
    routes.MapPageRoute("Test", "Test/", "~/ASPWebforms/Test.aspx"); 
} 

但随后http://localhost:54847/Test将不再工作。

我期待的联系http://localhost:54874/Test~/ASPWebforms/Test.aspx 而其他环节照常上班MVC样式{controller}/{action}/{id}

THX对您有所帮助!

+0

你期待的路线是什么? http:// localhost:54847/Home/Index? –

+0

我现在的意图在上面。 – beatoss

我找到了这个网页上对第一个问题的解决方案:

http://forums.asp.net/p/1589809/4028028.aspx

从这个页面的一个有趣的句子:

请阅读主题“了解出站URL匹配 算法“在史蒂夫书中。

我可以帮助第二个疑问。

它不工作的原因是因为航线顺序很重要。

http://msdn.microsoft.com/en-us/library/cc668201.aspx

每当它找到一个匹配,没有更多的路由将被测试以该请求。