Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# mvc路由和webforms页面_C#_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc Routing - Fatal编程技术网

C# mvc路由和webforms页面

C# mvc路由和webforms页面,c#,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Routing,一些背景: 我创建了一个新的ASP.NET MVC 3 Web应用程序。 然后我添加一个Webforms页面:~/ASPWebforms/Test.aspx 然后我在Global.asax文件中编辑路由,如下所示: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapPageRoute("Tes

一些背景: 我创建了一个新的ASP.NET MVC 3 Web应用程序。 然后我添加一个Webforms页面:
~/ASPWebforms/Test.aspx
然后我在Global.asax文件中编辑路由,如下所示:

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}


谢谢你的帮助

我可以帮你解决第二个疑问

它不起作用的原因是因为路线顺序很重要


每当它找到匹配项时,将不再测试该请求的路由。

我在本页找到了第一个问题的解决方案:

本页有一句有趣的话:

请阅读“理解出站URL匹配”主题 史蒂夫书中的“算法”


你期望的路线是什么?