在非标准文件夹中查找视图: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中文网其他相关文章!