web-dev-qa-db-ja.com

ASP.NET Core UrlHelperとその機能

私はASP.NET Coreにかなり慣れていません。現在、UrlHelperが一般的にどのように機能するかを理解しようとしています。

私のコントローラーで、同じコントローラー内の別のアクションへの絶対URLを作成します。 http://localhost:PORT/api/controller/action。問題は、どうすればよいですか。

私は次のことを試しました:

var urlHelper = new UrlHelper(new ActionContext());
var url = urlHelper.Action("ACTION", "CONTROLLER");

さらに、ActionContextのような異なるコンテキストは何ですか?

7
Frederik

UrlHelperを自分で作成するべきではありません。現在使用しているコンテキストが何であれ、既に IUrlHelper インスタンスが使用可能である可能性があります:

そのため、this.UrlにアクセスしてURLヘルパーを取得できる可能性があります。

独自のサービスを実装するときなど、それが存在しない状況にいる場合は、常に IUrlHelperFactoryIActionContextAccessor 最初に現在のアクションコンテキストを取得してから、そのためのURLヘルパーを作成します。

ActionContext とは、基本的には、現在のリクエストが処理されている現在のMVCアクションコンテキストを識別するさまざまな値を含むオブジェクトです。そのため、実際のリクエスト、解決されたコントローラーとアクション、またはバインドされたモデルオブジェクトに関するモデルの状態に関する情報が含まれています。これは基本的に HttpContext の拡張であり、MVC固有の情報も含まれています。


ASP.NET Core 2.2以降を実行している場合は、サービス内でLinkGeneratorの代わりに IUrlHelper を使用することもできます。これにより、簡単に生成できます。 URLは、IUrlHelperFactoryを介してヘルパーを作成する必要がある場合と比較されます。

4
poke