我一直在使用ASP.Net MVC(3)一段時間了,我非常喜歡它。但有一件事我覺得有點討厭,就是不得不一直在controllers/views/model/script目錄之間瀏覽。所以我想知道是否有辦法告訴MVC在不同位置查找文件?更改ASP.Net MVC目錄結構
也許有人可以告訴我如何簡單地組文件一起由控制器,如:
目錄:/會員
- MembershipController
- LogOnView
- LogOnModel
- RegisterView
- RegisterModel
親切的問候奧拉夫
我一直在使用ASP.Net MVC(3)一段時間了,我非常喜歡它。但有一件事我覺得有點討厭,就是不得不一直在controllers/views/model/script目錄之間瀏覽。所以我想知道是否有辦法告訴MVC在不同位置查找文件?更改ASP.Net MVC目錄結構
也許有人可以告訴我如何簡單地組文件一起由控制器,如:
目錄:/會員
親切的問候奧拉夫
我想你需要獲得通過電動工具更新解決方案導航器擴展VS 2010
這樣一來,就可以在解決方案導航顯示,而不是解決方案資源管理器,只有打開的文件,例如。使它更容易。
順便說一句,刪除所有的模型文件夾,並創建一個單獨的樣板工程,如:
MyApp.Domain
的任何解決方案,它超出了基本都會從中受益。
正如您對問題的評論所述,地區也將減少您的導航要求。
我確切地知道你在說什麼。下面是在那裏我找到了默認MVC文件夾結構是繁重的條件:
爲什麼我要將每個這些作品放在不同的文件夾中?
我創建的視圖文件夾視圖中的文件夾,讓你有一個文件夾〜/查看/ MyEntityList(就像傳統的MVC方式),但我把一切,涉及到該組件有:
~/Views/MyEntityList/
MyEntityListController.cs
MyEntityListModel.cs
MyEntityList.js
MyEntityList.aspx
我覺得這個結構會讓所有的開發人員保持視圖相互分離。除了允許瀏覽器直接訪問.js資源之外,不需要任何特殊的MVC配置。
有一些架構模式,這可能不是一個好方法。對於模型 - 觀看模式(更多描述請參見Los Techies),我非常喜歡這種結構。
唯一的「尋找文件」事情是有意見,一切只是一個約定。因此,如果你願意,你可以有:
目錄:/會員
- MembershipController
- LogOnView
- LogOnModel
- RegisterView
- 個RegisterModel
...但意見必須在~/Views/Membership
不,視圖可以在任何地方。你只是沒有找到你正常尋找的好路徑。您可以指定您喜歡的任何路徑到您的視圖的任何位置。 –
@Mystere Man:是的,你可以使用絕對路徑。我在談論框架如何定位東西,所以除非你使用絕對路徑,否則視圖必須在'〜/ Views'中。 –
看起來你需要覆蓋的視圖引擎的一些行爲。你可以See this question得到一個更好的主意。
我可以想到的一種方法是實現這一點,就是編寫自定義視圖引擎。你可以把所有這些低於控制器/會員
模式將不會是一個問題,你可以簡單地改變文件模型的命名空間,唯一的問題是視圖。爲此,編寫自定義視圖引擎,以便您的mvc應用程序知道視圖文件的物理位置,如下所示。
public class CustomViewEngine : RazorViewEngine
{
public CustomViewEngine()
{
ViewLocationFormats = new[]
{
"~/Controllers/{1}/{0}.cshtml",
};
}
}
在通過的global.asax.cs包括下面的代碼
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());
您可能還需要照顧其他各種因素,如更新取決於佈局屬性加在的Application_Start()的視圖引擎放置_Layout.cshtml的位置。
如果您正在使用區域,請同時添加AreaViewLocationFormats字符串數組。
您可以通過覆蓋FileExists,CreateView,CreatePartialView等方法進行進一步的自定義。
注意:不要忘記將views文件夾中的web.config複製到Membership控制器。否則,應用程序找不到所需的mvc命名空間,並且找不到像viewbag,model等符號。
我認爲您對MVC領域感興趣:http://msdn.microsoft.com/en-us/library/ ee671793.aspx –
@Kirk我認爲即使在使用MVC區域之後,您仍然需要瀏覽每個區域中的控制器/視圖/模型。 –
安裝Resharper。要轉到控制器或視圖等(使用Idea鍵綁定),只需按Ctrl-N並開始輸入名稱,然後從列表中選擇。您的工具讓生活更輕鬆。不幸的是,它不適用於腳本: -/ – Sean