2013-04-16 50 views
6

我可能會爲我的應用程序提供很多部分視圖,這些視圖可以歸入文件夾結構中。看來我應該這樣做,否則我會用一大堆文件查看文件夾。所以我認爲我應該有這樣的東西:在文件結構中組織部分視圖的最佳方法是什麼?

Views -> 
    Group1 -> 
    PartialView1 
    PartialView2 

HTML.Partial調用將是什麼樣子?

HTML.Partial("~/Views/Group1/MyPartialView.cshtml",Model) 

另一個想法我是讓用條件代碼塊的一個局部視圖文件,但我懷疑這違背了一切,PartialViews約。

如果一個人有很多小部分視圖與一個大部分視圖有多個條件組件,最後是否有任何性能差異?我想我正在考慮將一個文件加載到內存中並編譯爲代碼而不是多個小文件加載。

謝謝。

編輯:更多信息。

我有一個通用控制器,用於渲染報告的不同部分,所以「介紹」章節的所有章節都將使用「介紹」部分進行呈現,即「Introduction.Section1」,「Introduction.Section2」 。在我的場景中,我不相信我在各章中都有共同的章節,所以我可以使用「文件」。想法,但視圖文件夾會很大,因此我正在考慮使用子文件夾。

編輯:謝謝大家。這裏有一些很棒的想法。因爲我在其他地方使用這種方法,所以我最終選擇了文件夾概念。但是我意識到我需要使用絕對路徑,但這不是問題。

+1

你是否使用每個實際模型類型的編輯器/顯示模板進行了研究?它允許您以全系統方式將視圖鏈接到模型類型,而無需手動提供部分視圖的名稱。 (http://stackoverflow.com/a/5497234/1373170) –

回答

3

只要它們位於Views目錄中,它應該沒有關係。如果您將其放在Views/{controller}Views/Shared以外的位置,則需要完全合格的位置,包括Views和擴展名@Html.Partial("~/Views/Group1/PartialView1.cshtml")。個人而言,如果您在單個控制器中使用了很多partials,我會將它們留在{controller-name}目錄中(帶有前導下劃線作爲@IyaTaisho建議)。但是,如果它們被多個控制器使用,並且您需要對它們進行分組,那麼我將它們分組在Views/Shared/{groupName}之下。

關於一個很大的小部分,我會說很多小部分。可能有時間做一個大的理由,但總的來說,我相信一個局部應該儘可能簡單。請記住,您始終可以嵌套部分,因此如果您在許多部分之間共享功能或佈局,則可以將其分解爲下方的父部分和許多子部分。

+0

感謝您的支持。實際上,我有一個通用控制器,用於渲染報告的不同部分,因此「介紹」一章的所有章節都將使用「介紹」部分進行呈現,即「Introduction.Section1」,「Introduction.Section2」。在我的場景中,我不相信我在各章中都有共同的章節,所以我可以使用「文件」。想法,但視圖文件夾會很大,因此我正在考慮使用子文件夾。 – SamJolly

5

你可以使用一個父子文件命名規則,如:

header.html 
header.login.html 
header.searchbar.html 

你甚至可以把它更進了一步:

contact.helpdesk.html 
contact.office.html 

重新使用的諧音是要比獨特的諧音那麼頻繁,所以你可以使用一個慣例可重複使用的部分,如:

global.partial1.html 
global.partial2.html 
  • 限制是一個大文件目錄。

  • 有利於脫脂,易於分類。

+0

有趣的想法。在MVC3方面,你認爲這比用於相同目的的文件夾更可取,比如Header \ header.html,Header \ Login.html,Header \ SearchBar.html – SamJolly

+0

+1我喜歡這種方法,它有什麼缺點嗎? –

+1

@SamJolly你可能會失去理智。此外,這種情況下的父級不是文件夾,而是文件本身。對於父母來說是部分的。 –

5

我通常在部分前加一個_。例子會有一個叫做Home.cshtml的主視圖。頁面上的部分(partials)應該是這樣的:_header.cshtml,_footer.cshtml等。

+0

謝謝你。是的,知道「_」方法。問題不在於區分部分,而是在於如何組織大量不同的部分。 – SamJolly

+0

啊,我明白了。我有一個類似的問題。我在當前的項目中繼承了大量的他們。現在,我已經讓它保持原樣,因爲它更容易處理(混合部分和視圖)。我幾乎建議爲他們製作一個文件夾,但同時我不確定。對不起,我不能再幫忙了。 – IyaTaisho

相關問題