首頁 > 後端開發 > C++ > 如何在ASP.NET MVC中自定義查看搜索位置以在特定子文件夾中找到視圖?

如何在ASP.NET MVC中自定義查看搜索位置以在特定子文件夾中找到視圖?

Mary-Kate Olsen
發布: 2025-01-26 00:56:10
原創
594 人瀏覽過

How Can I Customize View Search Locations in ASP.NET MVC to Find Views in Specific Subfolders?

在ASP.NET MVC中自定義視圖搜索位置

在組織MVC項目時,可能需要指定視圖搜索操作的自定義位置。這允許控制器在特定的子文件夾中查找視圖,以適應具有獨特目錄結構的項目。

問題:

在一個具有以下佈局的項目中:

<code>/Controllers
    /Demo
        /DemoArea1Controller
        /DemoArea2Controller
        等等...
/Views
    /Demo
        /DemoArea1/Index.aspx
        /DemoArea2/Index.aspx</code>
登入後複製

使用具有以下代碼的DemoArea1Controller:

<code>public ActionResult Index()
{
    return View();
}</code>
登入後複製

會導致“找不到視圖'index'或其母版頁”錯誤。默認情況下,MVC在以下位置搜索視圖:

  • ~/Views/ControllerName/ActionName.aspx
  • ~/Views/ControllerName/ActionName.ascx
  • ~/Views/Shared/ActionName.aspx
  • ~/Views/Shared/ActionName.ascx

出現此問題是因為控制器期望在~/Views/DemoArea1中找到Index.aspx視圖,但該視圖位於~/Views/Demo/DemoArea1/Index.aspx中。

解決方案:

要為視圖搜索操作指定自定義位置,請擴展WebFormViewEngine類:

<code>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/{1}/{0}.aspx被添加到視圖位置列表中。這允許Demo命名空間中的控制器在Demo視圖子文件夾中查找視圖。

請記住在Global.asax.cs的Application_Start方法中註冊自定義視圖引擎:

<code>protected void Application_Start()
{
    ViewEngines.Engines.Clear();
    ViewEngines.Engines.Add(new CustomViewEngine());
}</code>
登入後複製

通過創建自定義視圖引擎,開發人員可以輕鬆指定視圖的附加搜索位置,從而在ASP.NET MVC項目中提供靈活性和組織性。

以上是如何在ASP.NET MVC中自定義查看搜索位置以在特定子文件夾中找到視圖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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