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; }