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

时间:2016-03-05 19:10:57

标签: asp.net asp.net-mvc asp.net-mvc-4

我正在探索使用Sections在我的网站布局中创建可选内容,正如ScottGu在这篇文章中非常巧妙地解释的那样:

http://weblogs.asp.net/scottgu/asp-net-mvc-3-layouts-and-sections-with-razor

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

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

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

部分观点似乎是前进的方式:

Injecting content into specific sections from a partial view ASP.NET MVC 3 with Razor View Engine

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

我一直在寻找这方面的答案,但是就像这样的事情一样,我100%肯定我没有在我的搜索尝试中使用正确的术语 - 所以如果这是重复的帖子,基本的东西,请道歉,或已在其他地方得到解答。

关于此的任何指示 - 即使只是为了给我一些关于搜索条件的方向 - 也欢迎!

我在这里没有提供任何示例代码,但如果有助于表达事物,可能会有所帮助。

干杯

2 个答案:

答案 0 :(得分:1)

听起来你需要布局嵌套,而不是部分。

您可以创建主布局,然后使用包含侧边栏的布局,使其布局属性指向主布局。然后,您可以选择要使用的内容页面布局,只需指定Layout = Master.cshtmlLayout = Sidebar.cshtml

答案 1 :(得分:0)

我认为您提供的链接中概述的方法非常可行。

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