Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 在文件结构中组织局部视图的最佳方法是什么?_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 3 在文件结构中组织局部视图的最佳方法是什么?

Asp.net mvc 3 在文件结构中组织局部视图的最佳方法是什么?,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我的应用程序可能有许多局部视图,这些视图可以分组到文件夹结构中。看来我应该这样做,否则我会看到一个文件夹与负荷的文件。所以我想我应该有这样的东西: Views -> Group1 -> PartialView1 PartialView2 HTML.Partial调用是什么样子的 HTML.Partial("~/Views/Group1/MyPartialView.cshtml",Model) 我的另一个想法是使用一个带有条件代码块的局部视图文件,但我怀疑

我的应用程序可能有许多局部视图,这些视图可以分组到文件夹结构中。看来我应该这样做,否则我会看到一个文件夹与负荷的文件。所以我想我应该有这样的东西:

Views -> 
  Group1 -> 
    PartialView1
    PartialView2
HTML.Partial调用是什么样子的

 HTML.Partial("~/Views/Group1/MyPartialView.cshtml",Model)
我的另一个想法是使用一个带有条件代码块的局部视图文件,但我怀疑这违背了partialView的所有内容

最后,如果一个具有多个条件组件的小部分视图与一个具有多个条件组件的大部分视图相比,性能是否有任何差异?我想我在想,一个文件加载到内存中并编译成代码,而不是多个小文件加载

谢谢

编辑:更多信息

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


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

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

header.html
header.login.html
header.searchbar.html
你甚至可以更进一步:

contact.helpdesk.html
contact.office.html
重复使用部分比使用唯一部分的频率要低得多,因此您可以对可重复使用的部分使用约定,如:

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

  • 好处容易浏览,容易分类


我通常在一个部分前面加一个。例如,将有一个名为Home.cshtml的主视图。页面上的片段(片段)应该是这样的:_header.cshtml、_footer.cshtml等等。

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

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


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

这是一个有趣的想法。就MVC3而言,您认为这是否比具有相同用途的文件夹(即Header\Header.html、Header\Login.html、Header\SearchBar)更可取。html@SamJolly你可能会失去理智。此外,在这种情况下,父级不是文件夹,而是文件本身。如果你有一个非常大的web应用程序,你的文件目录会很大,但是它很容易被浏览。也就是说,所有的父视图都是分块的,部分视图是按字母顺序排列的。这很有趣,但它似乎将您的部分视图显式地绑定到页面视图(尽管它没有)。因此,如果您有一个分部需要由两个不同的视图使用(例如,
productPricinInfo
同时由
ProductList
ProductDetails
使用),您会如何命名分部?最后,它只是一个名字,所以你可以随意命名它,并且在任何地方都可以使用它,但是像这样的惯例让你看起来好像在限制它。@JoeEnos,这是一个很好的观点。我认为在这种情况下,您可以使用
global.name.html
约定。重复使用分部比使用唯一分部的频率要低得多。谢谢。是的,我知道“_u”方法。问题不在于区分部分,而是如何组织大量不同的部分。啊,我明白了。我也有类似的问题。在我目前的项目中,我继承了大量的知识。现在,我让它保持原样是因为它更容易处理(混合部分和视图)。我几乎建议为他们制作一个文件夹,但同时我也不确定。对不起,我帮不了你了。谢谢你。事实上,我有一个通用控制器,用于呈现报告的不同部分,因此“简介”章节的所有部分都将使用“简介”部分呈现,即“简介.Section1”、“简介.Section2”。在我的场景中,我不相信我有跨章节的公共部分,因此我可以使用“文件”概念,但视图文件夹会很大,因此我考虑使用子文件夹。您是否考虑过使用每个实际模型类型的编辑器/显示模板?它允许您以系统范围的方式将视图链接到模型类型,而无需手动提供局部视图的名称。()