必要に応じて、次のように独自のカスタム View Start を作成しました。
public abstract class MyViewStart : System.Web.Mvc.ViewStartPage {
public My.Helpers.ThemeHelper Themes { get; private set; }
public MyViewStart() : base() {
Themes = new Helpers.ThemeHelper(base.ViewContext)
}
}
必要なのは、_ViewStart で、テーマに依存するレイアウト ファイルの検索を行う必要があることです。それが行うことは、問題とは無関係です。
私の Views/Shared/_ViewStart.cshtml は次のようになります (無関係なものは削除されています)。
@inherits MyNamespace.MyViewStart
@{
Layout = Themes.ThemeLayout;
}
したがって、標準の ViewStartPage から派生したカスタム ViewStart クラスがあります。標準の _ViewStart.cshtml は ViewStartPage です。新しい _ViewStart.cshtml は MyViewStart ページであり、これは標準の ViewStartPage であるため、すべてが継承でカバーされます。
ただし、アプリケーションを実行すると、次のエラーが表示されます。
ViewStartPage は、WebViewPage または別の ViewStartPage から派生したページでのみ使用できます。
これは、カスタム ビュー開始クラスのコンストラクターの "Themes = new Helpers.ThemeHelper" 行によってスローされます。では、カスタム ビュー開始クラスが ViewStartPage の子である場合に、なぜその例外がスローされるのでしょうか ???