2009-05-14 18 views

答えて

72

アクションとルートは1対1の関係を持つ必要はありません。

アクションリンクは、アクション名に最初に一致するルートを使用してアクションに到達するためのURLを生成します。

RouteLinkは、名前またはルート値のいずれかで指定された特定のルートへのURLを生成します。

+0

+1素晴らしいブログ記事です。本当に便利です。そして、あまりにも多くの可能性があることを示しています。 MSの人は最も速く実装する必要があります。しかし、人々はむしろファンシーなラムダを使っています。 –

+0

ありがとう、しかし、私はリンクが壊れていないと思う。 pls私は再び私にリンクを提供します ありがとう – user1006544

+4

私たちは例を得ることができますか? – MaylorTaylor

12

RouteLinkはルートの名前をとるので、ルート名が信頼でき、かなりユニークな場合は、使用するアクション名が変更されても同じになります。 ActionLinkは、代わりに特定のコントローラーの特定のアクションにリンクします。私は私の後ろにどんな種類のリンクがあるかによって、私の見解で両方を使用します!

63

実際には、二つの方法からの出力は同じですが、それは少し異なる方法で生成されます。

Html.ActionLink()は、それが簡単に高速ActionLinksを生成することができる、そしてあなたにレンダリングされているもの以上の基本的な制御を提供します。余りにも多くのルートがない場合や、あまりにも多くの情報をあまりにも多く与える必要がない場合は、これでうまくいくでしょう。

Html.RouteLink()メソッドでは、引数が多少異なるため、処理される方法を詳細に制御できます。シナリオが少し複雑な場合や、より詳細なルート構造がある場合は、この方法を使用する傾向があります。
最近のプロジェクトの1つの例は、柔軟性のためにいくつかのルートがあり、かなり単純なものでしたが、多くの情報を許可する複雑なルートよりも優れています。したがって、同じコントローラの4つまたは5つのルートで終了しました。すべてデフォルトアクションが指定されています。私はほとんどRouteLinkバージョンを使用しました。ルート名を指定すると、デフォルトのパラメータが自動的に入力されたからです。

あなたが気に入ったように、そしてプロジェクトに合ったものを使用してください。実際にはどちらの側にも上向き/下向きがありません(それは他のものとは一致しません...)。

19

他の回答に加えて、RouteLinkは少し速く、ルーティングテーブルを変更したため間違ったルートに一致することはありません。

+1

Simone Chiarettaはここでいくつかのパフォーマンス分析を行った:http://codeclimber.net.nz/archive/2009/04/17/the-performances-implications-of-the-expression-tree-based-actionlink-helper.aspx – Dmitry

関連する問題