首頁 > 後端開發 > C++ > 如何在ASP.NET MVC中自定義視圖位置以在非標准文件夾中找到視圖?

如何在ASP.NET MVC中自定義視圖位置以在非標准文件夾中找到視圖?

Patricia Arquette
發布: 2025-01-26 00:51:10
原創
109 人瀏覽過

How Can I Customize View Locations in ASP.NET MVC to Find Views in Non-Standard Folders?

在非標准文件夾中查找視圖: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類並修改PartialViewLocationFormatsViewLocationFormats屬性:

<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.csApplication_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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板