web-dev-qa-db-ja.com

MVC3のUrl.RouteUrl()とUrl.Action()の違い

Cshtmlページで動的にURLを生成しているところです。 Url.RouteUrl()とUrl.Action()の違いは何ですか?

URLを生成するためにどちらを使用する必要がありますか?また、実装に関して両方にどのような違いがありますか?

前もって感謝します。

27
Biki

RouteUrlはルート名に基づいてURLを生成しました。同様のパラメータを持つ複数のルートがある場合、Actionメソッドは間違ったルートを選択する可能性があります-ルート定義の順序に基づいて機能します。これは、ルートにオプションのパラメータがある場合に発生する可能性があります。

特定のルートURLが使用されることを確認したい場合は、このルート名を渡してRouteUrlを呼び出す必要があります。ルート名は一意であり、ルートを明確に識別します。

もう1つの違いは、ActionはMVC固有(コントローラー名とアクション名を使用)であるのに対し、RouteUrlは一般的であり、MVCなしで使用できることです(WebFormsでルーティングできます)。

49
Jakub Konecki

Url.RouteUrlを使用すると、特定のルートを名前で指定できます。これはforceそのルートの使用法になります。 Url.Actionは、基準に一致する最初のルートを選択するだけです。

17
Darin Dimitrov