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

Sam*_*lly 7 razor asp.net-mvc-3

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

Views -> 
  Group1 -> 
    PartialView1
    PartialView2
Run Code Online (Sandbox Code Playgroud)

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

 HTML.Partial("~/Views/Group1/MyPartialView.cshtml",Model)
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

编辑:更多信息.

我有一个通用控制器,用于呈现报表的不同部分,因此"介绍"部分的所有部分都将使用"简介"部分进行渲染,即"Introduction.Section1","Introduction.Section2".在我的场景中,我不相信我在章节中有共同的部分,所以我可以使用"文件".想法,但Views文件夹会很大,因此我考虑使用子文件夹.

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

Joe*_*nos 6

只要它们在Views目录中的某个位置,就没有关系。如果将其放在Views/{controller}或以外的其他位置Views/Shared,则需要完全限定的位置,包括Views和扩展名,因此@Html.Partial("~/Views/Group1/PartialView1.cshtml")

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

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


Dan*_*nze 5

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

header.html
header.login.html
header.searchbar.html
Run Code Online (Sandbox Code Playgroud)

你甚至可以更进一步:

contact.helpdesk.html
contact.office.html
Run Code Online (Sandbox Code Playgroud)

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

global.partial1.html
global.partial2.html
Run Code Online (Sandbox Code Playgroud)
  • 限制是一个大文件目录.

  • Benifits易于脱脂,易于分类.

  • 这很有趣,但看起来它将您的局部视图明确地绑定到页面视图(即使它没有).因此,如果你有一个部分需要被两个不同的视图使用(让我们说'ProductList`和`ProductDetails`都使用`ProductPricingInfo`),你会命名为partial?最后,它只是一个名字,所以你可以随心所欲地命名它,并且仍然可以在任何地方使用它,但像这样的约定会给你一种限制它的外观. (2认同)

Iya*_*sho 5

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