ASP.NET MVC でのビューの検索位置をカスタマイズする
ASP.NET MVC は、デフォルトでは、特定の Views
フォルダー階層内のビューを検索します。ただし、名前空間に基づいてビューを整理する場合など、場合によっては、ビューの検索場所をカスタマイズする必要があります。
問題の説明
次のプロジェクト構造を考えてみましょう:
<code>- Controllers - Demo - DemoArea1Controller - DemoArea2Controller - Views - Demo - DemoArea1 - Index.aspx - DemoArea2 - Index.aspx</code>
「Demo」名前空間 (例: DemoArea1Controller
) のコントローラーにアクセスすると、MVC はデフォルトで /Views/DemoArea1
サブフォルダー内のビューを検索します。ただし、「ビュー 'インデックス' またはそのマスター ページが見つかりません」というエラーが表示されます。
解決策
ビューの検索位置をカスタマイズするには、WebFormViewEngine
クラスを拡張することをお勧めします:
<code class="language-csharp">public class CustomViewEngine : WebFormViewEngine { public CustomViewEngine() { var viewLocations = new[] { "~/Views/{1}/{0}.aspx", "~/Views/{1}/{0}.ascx", "~/Views/Shared/{0}.aspx", "~/Views/Shared/{0}.ascx", "~/AnotherPath/Views/{0}.ascx" //等等 }; this.PartialViewLocationFormats = viewLocations; this.ViewLocationFormats = viewLocations; } }</code>
ここでは、カスタム ビューの検索場所を含む配列を定義します。
登録
カスタム ビュー エンジンを作成した後、それを Global.asax.cs
の Application_Start
メソッドに登録する必要があります:
<code class="language-csharp">protected void Application_Start() { ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(new CustomViewEngine()); }</code>
デフォルトのビュー エンジンをクリアしてカスタム エンジンを追加すると、コントローラが指定された場所でビューを検索するように効果的に指定できます。
この改訂された出力は、元のイメージを維持し、同様の意味を実現するためにテキストを言い換えていますが、コード例は変更されていません。
以上がASP.NET MVCの[検索場所の表示]をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。