0

一些背景知识:我创建了一个新的 ASP.NET MVC 3 WebApplication。然后我添加一个 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}

谢谢你的帮助!

4

2 回答 2

1

我可以帮助解决第二个疑问。

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

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

每当找到匹配项时,将不再对该请求进行测试。

于 2012-06-22T18:22:00.967 回答
1

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

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

此页面中的一个有趣的句子:

请阅读 Steve 书中的“Understanding the Outbound URL-Matching Algorithm”主题。

于 2012-06-27T09:52:54.523 回答