在非標准文件夾中查找視圖:ASP.NET MVC視圖位置自定義
ASP.NET MVC默認會在文件系統中的特定位置搜索視圖。然而,當項目採用非標準組織方式時,自定義這些搜索位置非常有用。本文將探討如何指定自定義視圖位置。
問題概述
假設項目結構如下:控制器位於/Controllers/Demo
,視圖位於/Views/Demo
。以下控制器代碼可能會導致錯誤:
<code class="language-csharp">public class DemoArea1Controller : Controller { public ActionResult Index() { return View(); } }</code>
默認搜索位置不包含/Views/Demo
文件夾,因此會報錯,提示找不到視圖“Index”。
解決方案
要指定自定義視圖位置,可以擴展WebFormViewEngine
類並修改PartialViewLocationFormats
和ViewLocationFormats
屬性:
<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", "~/Demo/Views/{1}/{0}.aspx", "~/Demo/Views/{1}/{0}.ascx" }; this.PartialViewLocationFormats = viewLocations; this.ViewLocationFormats = viewLocations; } }</code>
此更新後的視圖引擎將/Demo/Views
文件夾包含在搜索位置中。
配置
最後,在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現在將搜索默認位置和自定義的/Demo/Views
文件夾中的視圖。
以上是如何在ASP.NET MVC中自定義視圖位置以在非標准文件夾中找到視圖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!