私は1つのビューで99%に基づく高度なサイトを作成しています。 〜/ Views/Shared/UniversalView.cshtmlという共通のビューに対応するビューを持っていないすべてのコントローラのアクションを指す責任を負う次のコードを作成しました。指定されたビューを持たないすべてのアクションを1つの具体的なビューに指し示す
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
foreach (IViewEngine engine in ViewEngines.Engines)
{
if (engine is RazorViewEngine)
{
RazorViewEngine razorEngine = (RazorViewEngine)engine;
var locationFormats = razorEngine.ViewLocationFormats;
List<string> l = new List<string>(locationFormats);
l.Add("~/Views/Shared/UniversalView.cshtml");
razorEngine.ViewLocationFormats = l.ToArray();
}
}
}
このような効果を得るには、もっと良い方法があることを確信しています。何か案は?
お返事ありがとうございます。以前はそのソリューションを検討していましたが、1つの違いは、コントローラクラスを継承し、Viewメソッドをオーバーライドすることを考えていたのですが、コントローラの複雑さのために怖がってしまいました。 IMHOは良い解決策ですが、プログラマはカスタムコントローラクラスから派生することを覚えておく必要があります。その結果、メンテナンスが難しくなります。 – MaciejLisCK