在文件结构中组织部分视图的最佳方法是什么?

时间:2013-04-16 14:19:23

标签: asp.net-mvc-3 razor

我可能会为我的应用程序提供许多部分视图,这些视图可以在文件夹结构中进行分组。看来我应该这样做,否则我会看一个包含大量文件的View文件夹。所以我认为我应该有类似的东西:

Views -> 
  Group1 -> 
    PartialView1
    PartialView2

HTML.Partial调用会是什么样的?

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

我的另一个想法是让一个部分视图文件带有条件代码块,但我怀疑这与PartialViews的所有内容相悖。

如果一个人有很多小的部分视图而不是一个带有多个条件组件的大型部分视图,那么性能是否存在差异?我想我认为一个文件加载到内存和编译代码而不是多个小文件加载。

感谢。

编辑:更多信息。

我有一个通用控制器,我用它来呈现报告的不同部分,因此“引言”章节的所有部分都将使用“简介”部分来呈现,即“Introduction.Section1”,“Introduction.Section2”。在我的场景中,我不相信我在章节中有共同的部分,所以我可以使用“文件”。想法,但Views文件夹会很大,因此我考虑使用子文件夹。

编辑:谢谢大家。这里有一些很棒的想法。我最后使用了文件夹的想法,因为我在其他地方使用这种方法。但是我确实意识到我需要使用绝对路径,但这不是问题。

3 个答案:

答案 0 :(得分:5)

您可以使用父子文件命名约定,如:

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

你甚至可以更进一步:

contact.helpdesk.html
contact.office.html

重复使用partials的频率远低于unique partials,所以你可以使用一个约定来重复使用partials:

global.partial1.html
global.partial2.html
  • 限制是一个大型文件目录。

  • 优点易于浏览,易于分类。

答案 1 :(得分:5)

我通常在部分前添加_。示例将有一个名为Home.cshtml的主视图。页面上的部分(部分)将具有如下内容:_header.cshtml,_footer.cshtml等。

答案 2 :(得分:3)

只要它们位于某个地方的Views目录中,它就不重要了。如果您将其放在Views/{controller}Views/Shared以外的位置,那么您将需要完全限定的位置,包括Views和扩展程序,因此@Html.Partial("~/Views/Group1/PartialView1.cshtml")

就个人而言,如果您在单个控制器中使用了很多部分内容,我会将它们保留在{controller-name}目录中(带有@IyaTaisho建议的前导下划线)。但如果他们在多个控制器中使用,并且您需要对它们进行分组,我会将它们分组在Views/Shared/{groupName}下。

关于一个大部分与多部分小部分,我会说很多小部分。可能有理由不时地做一个大的,但总的来说,我认为局部应该尽可能简单。请记住,您可以始终拥有嵌套的部分,因此如果您在许多部分中具有共享功能或布局,则可以将其分解为父部分和下部的多个子部分。