1

私はそのような行動をとっています:

@Html.ActionLink(dinner.Title, "Details", new { id=dinner.DinnerID }) 

そしてそのように定義されたルート:

routes.MapRoute(
                    "PrettyDetails",
                    "{Id}",
                        new { controller = "Dinners", action = "Details" },
                        new { Id = @"\d+" }
                    );

アクションリンクはレンダリングします<a href="/234">My Dinner</a>

"Details"リンクに表示されないのはなぜですか?Global.asaxで定義されたルートを認識しているため、パターンと何らかの形で一致しているためですか?

ありがとう

4

2 に答える 2

2

リンクに「詳細」が表示されないのはなぜですか?

Global.asaxで定義したルートパターンは{Id}、idが整数でなければならない場所であるためです。したがって、質問に答えるために、はい、Html.ActionLinkヘルパーはGlobal.asaxで定義したルートを尊重します。

detailsパターンを変更する必要があるのとは異なるアクションを渡すことができるようにしたい場合。たとえば、次のようになります{action}/{id}。明らかに、コントローラー部分についても同じことが言えます。

Html.RouteLinkGlobal.asaxのルート定義の順序で評価を実行したくない場合は、これを使用してルート名を指定できます。このようにして、特定のルートをターゲットにすることができます。もちろん、渡す引数はこのルートと首尾一貫している必要があります。

于 2012-04-11T17:32:21.527 に答える
2

答えは「はい」です。ActionLinkはURLをレンダリングするときに定義されたルートを考慮に入れています。

于 2012-04-11T17:33:53.373 に答える