私はASP.NET Core 2.0アプリケーションを使用していますが、ビューがビューの外で使用するレイアウトページを設定しようとしています。そうすれば、すべての私の意見のために、同じコードを上から繰り返し続ける必要はありません。ASP.NETコア - ビューの外にレイアウトページを設定
私は、コンストラクタの中でそれを設定し、次の基本クラスからの私のすべてのビューを継承することによって、これを達成することができます:
public class RazorPage<TModel> : Microsoft.AspNetCore.Mvc.Razor.RazorPage<TModel> {
public RazorPage() {
var theme = "Theme1;"
Layout = $"~/Areas/{theme}/Views/Shared/_Layout" + RazorViewEngine.ViewExtension;
}
}
しかし、これは、現在のURLに基づいて、テーマの変更の名前を正常に動作します。私は現在のコンテキストにアクセスすることでこれを行うことができると考えましたが、コンストラクタ内でContextプロパティを呼び出すと、nullが返されます。
Layoutプロパティを設定して現在のリクエストコンテキストにアクセスできる適切な方法が表示されません。
他の方法を知っている人はいますか?
私は_ViewImports/_ViewStartファイルでこれを実現できることを認識していますが、アプリケーションの構造上、ファイルが重複している必要があり、自分のビュー内にビジネスロジックを持つのが好きではありません。
多分、IViewLocationExpanderで始まる、https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.razor.iviewlocationexpander?view=aspnetcore-2.0 –