1. ホーム
  2. asp.net-mvc

[解決済み] ASP.NET MVCにビューは存在するのか?

2023-01-26 22:35:34

質問

ビューをレンダリングする前に、コントローラ内から特定のビュー名が存在するかどうかを判断することは可能でしょうか?

レンダリングするビューの名前を動的に決定する要件があります。もし、その名前のビューが存在すれば、そのビューをレンダリングする必要があります。もし、その名前のビューがなければ、デフォルトのビューをレンダリングする必要があります。

以下のコードのようなことをコントローラ内で行いたいと思います。

public ActionResult Index()
{
    var name = SomeMethodToGetViewName();

    // The 'ViewExists' method is what I've been unable to find.
    if (ViewExists(name))
    {
        retun View(name);
    }
    else
    {
        return View();
    }
}

どのように解決するのですか?

 private bool ViewExists(string name)
 {
     ViewEngineResult result = ViewEngines.Engines.FindView(ControllerContext, name, null);
     return (result.View != null);
 }

コピー&ペーストによる拡張方法をお探しの方へ。

public static class ControllerExtensions
{
    public static bool ViewExists(this Controller controller, string name)
    {
        ViewEngineResult result = ViewEngines.Engines.FindView(controller.ControllerContext, name, null);
        return (result.View != null);
    }
}