7

我的应用程序可能会有很多局部视图,它们可以分组在一个文件夹结构中。看来我应该这样做,否则我将创建一个包含大量文件的查看文件夹。所以我想我应该有类似的东西:

Views -> 
  Group1 -> 
    PartialView1
    PartialView2

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

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

我的另一个想法是拥有一个带有条件代码块的 Partial View 文件,但我怀疑这与 PartialViews 的所有内容背道而驰。

最后,如果一个有许多小的局部视图与一个具有多个条件组件的大局部视图相比,性能有什么不同吗?我想我正在考虑将一个文件加载到内存中并编译为代码,而不是加载多个小文件。

谢谢。

编辑:更多信息。

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

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

4

3 回答 3

6

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

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

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

于 2013-04-16T14:49:15.970 回答
5

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

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

你甚至可以更进一步:

contact.helpdesk.html
contact.office.html

重用部分比唯一部分少得多,因此您可以对可重用部分使用约定,例如:

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

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

于 2013-04-16T14:21:42.577 回答
5

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

于 2013-04-16T14:29:54.440 回答