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://forums.asp.net/p/1589809/4028028.aspx

このページの興味深い文:

Steve book のトピック「Outbound URL-Matching Algorithm について」をお読みください。

于 2012-06-27T09:52:54.523 に答える
1

2 番目の疑問を解決できます。

うまくいかない理由は、ルートの順序が重要だからです。

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

一致が見つかると、そのリクエストに対するルートはそれ以上テストされません。

于 2012-06-22T18:22:00.967 に答える