Asp.net MVC:如何创建由多个视图共享的公共部分

Asp.net MVC:如何创建由多个视图共享的公共部分,asp.net,asp.net-mvc,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在探索如何使用部分在我的站点布局中创建可选内容,正如ScottGu的文章中所解释的: 然而,我试图做的是在与特定控制器相关的视图中添加一个侧栏,其中侧栏包含与控制器相关的静态信息。数据不会绑定到模型,它只是一些指向外部页面的链接,以及一些静态的“帮助器”文本 我不希望在每个页面/视图上都有侧边栏,只希望在某些视图上有侧边栏(在我的例子中,它是与特定控制器相关的视图) 我不想做的是必须为每个需要此功能的视图声明相同的节和内容。我试图找到一些方法来创建一个“共享部分”——我可以在需要它的视图中

我正在探索如何使用部分在我的站点布局中创建可选内容,正如ScottGu的文章中所解释的:

然而,我试图做的是在与特定控制器相关的视图中添加一个侧栏,其中侧栏包含与控制器相关的静态信息。数据不会绑定到模型,它只是一些指向外部页面的链接,以及一些静态的“帮助器”文本

我不希望在每个页面/视图上都有侧边栏,只希望在某些视图上有侧边栏(在我的例子中,它是与特定控制器相关的视图)

我不想做的是必须为每个需要此功能的视图声明相同的节和内容。我试图找到一些方法来创建一个“共享部分”——我可以在需要它的视图中整齐地引用它,并在控制器返回视图时传递回_布局

部分观点似乎是这方面的前进方向:

但我不确定这是否是正确的方法,或者是否有更简洁的方法来实现我的目标

我一直在寻找这个问题的答案,但和以往一样,我100%确信我在搜索时没有使用正确的术语,所以如果这是重复的帖子、基本的东西,或者已经在其他地方得到了回答,我深表歉意

任何关于这一点的建议——即使只是给我一些关于搜索术语的指导——都是受欢迎的

我在这里没有提供任何示例代码,但如果它有助于清晰地表达事情,可能会改进一些东西


干杯

听起来您需要的是布局嵌套,而不是分区


您可以创建一个主布局,然后创建一个包含侧栏的布局,使其布局属性指向主布局。然后,只需指定
layout=Master.cshtml
layout=Sidebar.cshtml

我认为您提供的链接中概述的方法是非常可行的,您就可以为内容页选择要使用的布局


另一种选择是,根据在布局中获取侧栏所涉及的复杂性,您可以创建一个单独的布局。

谢谢Erik——这正是我所需要的——一种很好的、易于维护的方法。对于任何遇到此问题的人,下面的文章给出了嵌套布局的一个很好的基本示例: