1

私のルート登録は次のとおりです。

    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 を参照すると、適切なルートが一致します。/course/list ページにアクセスし、そのページで /course/view/87 を指すリンクをクリックすると、404: /course/list not found が表示されます。何か案が?

ありがとうございました

4

3 に答える 3

1

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

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

于 2013-03-20T00:28:26.970 に答える
0

この時点で

http://hspot.ca/course/list 

一致する

True    course/list controller = course, action = list

しかし404を提供します(それはあなたの執筆とは異なります、あなたはこのページが機能すると言いました)。

このような404は、ルートとその引数を処理できるコントローラーとアクションの組み合わせが見つからない場合に返されます。あなたが持っていることを確認してください

引数のないList()メソッドを持つCourseController

于 2013-03-20T00:01:10.293 に答える
0

I think you have overcomplicated it a bit. You really don't need the first two Routes at all, the dafault one alone will do just fine. Also, I think it is a bad idea to name your action 'view', any chance there is another option? It is just asking for trouble.

Structure your project like this:

Controllers/Course/CourseController.List.cs - Partial with List() method
Controllers/Course/CourseController.View.cs - Partial with View(string id) method

Views/Course/List.cshtml
Views/Course/View.cshtml

You should get what you are looking for with much less trouble.

Good luck!!

于 2013-03-20T00:47:09.350 に答える