【问题标题】:mvc routing and webforms pagemvc 路由和 web 表单页面
【发布时间】:2012-06-22 13:09:34
【问题描述】:

一些背景: 我创建了一个新的 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}

感谢您的帮助!

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing


【解决方案1】:

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

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

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

只要找到匹配项,就不会再测试该请求的路由。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 2015-10-09
      相关资源
      最近更新 更多