Asp.net
將子目錄添加到 ASP.Net MVC 中的“View/Shared”文件夾並呼叫視圖
我目前正在使用帶有 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());