Asp.net

將子目錄添加到 ASP.Net MVC 中的“View/Shared”文件夾並呼叫視圖

  • February 11, 2011

我目前正在使用帶有 Razor 的 ASP.Net MVC3 開發一個站點。在“View/Shared”文件夾中,我想添加一個名為“Partials”的子文件夾,我可以在其中放置所有的局部視圖(為了更好地組織站點。

只要我在呼叫視圖時總是引用“Partials”文件夾(使用 Razor),我就可以毫無問題地做到這一點:

@Html.Partial("Partials/{ViewName}")

我的問題是是否有辦法將“Partials”文件夾添加到.Net在搜尋視圖時經過的列表中,這樣我就可以呼叫我的視圖而不必引用“Partials”文件夾,如下所示:

@Html.Partial("{ViewName}")

謝謝您的幫助!

解決了這個問題。要將我創建的“Shared/Partials”子目錄添加到嘗試在 Razor 中查找局部視圖時搜尋的位置列表,請使用:

@Html.Partial("{NameOfView}")

首先創建一個以 RazorViewEngine 作為其基類的視圖引擎,並添加您的視圖位置,如下所示。同樣,我想將所有部分視圖儲存在我在 MVC 創建的預設“Views/Shared”目錄中創建的“Partials”子目錄中。

public class RDDBViewEngine : RazorViewEngine
{
   private static readonly string[] NewPartialViewFormats = 
   { 
       "~/Views/{1}/Partials/{0}.cshtml",
       "~/Views/Shared/Partials/{0}.cshtml"
   };

   public RDDBViewEngine()
   {
       base.PartialViewLocationFormats = base.PartialViewLocationFormats.Union(NewPartialViewFormats).ToArray();
   }       

}

請注意,位置格式中的 {1} 是控制器名稱,{0} 是視圖名稱。

然後將該視圖引擎添加到 global.asax 中 Application_Start() 方法中的 MVC ViewEngines.Engines 集合中:

ViewEngines.Engines.Add(new RDDBViewEngine()); 

引用自:https://stackoverflow.com/questions/4973000