2011-05-31 143 views
1

我正在爲asp.net mvc的widgetmanager工作,並讓主要部分工作,我需要從默認視圖文件夾外加載視圖。我有以下文件夾結構:加載視圖文件夾外部的視圖

... - 查看 - 小工具 | - 查看

我需要的意見,從裝載內部〜/小工具/瀏覽次數 我不知道如果我應該從頭開始編寫Viewengine或做其他事情,所以請隨時回答:)

pS該widgetmanager被稱爲S3WidgetManager,可以在GitHub

找到

回答

2

你可以寫一個custom view engine和玩以下基本特性,這允許您自定義的視圖的位置:

base.ViewLocationFormats 
base.PartialViewLocationFormats 
base.MasterLocationFormats 
base.AreaViewLocationFormats 
base.AreaPartialViewLocationFormats 
base.AreaMasterLocationFormats 

這裏是他們的默認值:

base.AreaViewLocationFormats = new string[] 
{ 
    "~/Areas/{2}/Views/{1}/{0}.cshtml", 
    "~/Areas/{2}/Views/{1}/{0}.vbhtml", 
    "~/Areas/{2}/Views/Shared/{0}.cshtml", 
    "~/Areas/{2}/Views/Shared/{0}.vbhtml" 
}; 
base.AreaMasterLocationFormats = new string[] 
{ 
    "~/Areas/{2}/Views/{1}/{0}.cshtml", 
    "~/Areas/{2}/Views/{1}/{0}.vbhtml", 
    "~/Areas/{2}/Views/Shared/{0}.cshtml", 
    "~/Areas/{2}/Views/Shared/{0}.vbhtml" 
}; 
base.AreaPartialViewLocationFormats = new string[] 
{ 
    "~/Areas/{2}/Views/{1}/{0}.cshtml", 
    "~/Areas/{2}/Views/{1}/{0}.vbhtml", 
    "~/Areas/{2}/Views/Shared/{0}.cshtml", 
    "~/Areas/{2}/Views/Shared/{0}.vbhtml" 
}; 
base.ViewLocationFormats = new string[] 
{ 
    "~/Views/{1}/{0}.cshtml", 
    "~/Views/{1}/{0}.vbhtml", 
    "~/Views/Shared/{0}.cshtml", 
    "~/Views/Shared/{0}.vbhtml" 
}; 
base.MasterLocationFormats = new string[] 
{ 
    "~/Views/{1}/{0}.cshtml", 
    "~/Views/{1}/{0}.vbhtml", 
    "~/Views/Shared/{0}.cshtml", 
    "~/Views/Shared/{0}.vbhtml" 
}; 
base.PartialViewLocationFormats = new string[] 
{ 
    "~/Views/{1}/{0}.cshtml", 
    "~/Views/{1}/{0}.vbhtml", 
    "~/Views/Shared/{0}.cshtml", 
    "~/Views/Shared/{0}.vbhtml" 
}; 
base.FileExtensions = new string[] 
{ 
    "cshtml", 
    "vbhtml" 
}; 
+0

當我這樣做,Html.RouteLink和默認模型變量不再被認可(probaly以上,但多數民衆贊成我用現在)。在默認視圖文件夾中拖放文件後,它可以正常工作,但是我不想在那裏 – MrSoundless 2011-05-31 07:30:18

+4

@MrSoundless,你需要在你的自定義文件夾中放置一個web.config文件。與'〜/ Views/web.config'中使用的一樣。不要忘記,在解析視圖中的引用時,Razor會查找此文件中定義的名稱空間。或者,如果您不想使用這樣的web.config文件,則需要在視圖中導入正確的使用,以便將幫助器引入範圍。 – 2011-05-31 07:31:06

+0

非常感謝您的支持,並不知道這件事! – MrSoundless 2011-05-31 07:34:43