shuhelohelo’s blog

Xamarin.Forms多めです.

Blazorでプロジェクト内のファイルを指定する絶対URIを生成するには?

これもBlazorというかASP.NET Coreの話ですが、現在実行中のアプリケーションのベースURIを取得する方法です。

多分いろいろあると思いますが、そのうちの一つということで。

ASP.NETではDIコンテナの機能が組み込まれていますが、ここに明示的に登録する以外にデフォルトで登録されているオブジェクトがあります。 どんなものがあるのか把握していませんが。

そのうちの一つにIUriHelperを実装したオブジェクトがあるようで、このオブジェクトのGetAbsoluteUriメソッドでベースURIを取得することができます。

このオブジェクトをDIコンテナから取得するようにすれば良いということです。

Razorページの場合

以下のようにしておけば、インスタンスuriHelperプロパティに注入されます。

@inject Microsoft.AspNetCore.Components.IUriHelper uriHelper

Razorページ内の使いたい場所で、以下のようにGetAbsoluteUriメソッドを呼び出せばベースURIを取得できます。

@uriHelper.GetAbsoluteUri()

コードビハインド(.csファイル)の場合

こちらはInject属性をつけたIUriHelper型のプロパティを用意しておくだけで良いです。

        [Inject]
        private IUriHelper uriHelper { get; set; }