0

これは私のルート登録コードです:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "course_list",
            "course/list",
            new { controller = "course", action = "list" }
        );

        routes.MapRoute(
            "course_view",
            "course/view/{id}",
            new { controller = "course", action = "list", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

リンクがあります /course/view/87

一致するルートは /course/list です

誰でも理由を説明できますか?

ありがとうございました

アップデート:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "course_list",
            "course/list",
            new { controller = "course", action = "list" }
        );

        routes.MapRoute(
            "course_view",
            "course/view/{id}",
            new { controller = "course", action = "view", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

しかし、私はまだ同じ問題を抱えています。/course/view/87 にアクセスすると、404 エラーが発生します。

4

3 に答える 3

0

ボタン要素は送信ボタンとして扱われます (つまり、デフォルトの type 属性が設定されていない場合は type="submit")。したがって、すべてのアクションが get(s) であるため、ブラウザーは投稿要求を開始しましたが、ルートは満たされませんでした。

ありがとうございました。

于 2013-03-20T00:34:50.693 に答える
0

これらのルートを空の Asp.Net Mvc 4 プロジェクトに追加し、routedebugger ( http://nuget.org/packages/routedebugger/ ) を使用すると、「course/view/{id}」の一致したルートが得られます。何が起こっているかを確認するには、ローカルで routedebugger を使用する必要があります。上記のコードは問題ないようです。

于 2013-03-19T21:41:16.290 に答える
0

course/view/{Id} のルートに「リスト」アクションがあるようです。これはタイプミスだと思います。

于 2013-03-19T21:34:46.943 に答える