我一直在阅读有关布局,剖面,视图和局部视图的内容,但我真的不知道如何处理这样的布局:
顶栏:就像酒吧那样 Facebook排在首位。我会包含 验证信息和 一般选项和菜单。
导航栏:将包含 关于你在哪里的信息,以及 你去哪里也是一个“搜索” 框。
正文:实际需要的信息。
边栏:将包含相关内容 有关内容的信息 体。
页脚:版权,许可和事物 那样的。
正文将是“视图”,补充工具栏将是“部分”,页脚将是“布局”中的静态HTML ,但是......什么是顶部栏和导航?
顶栏与任何内容无关,所以我会把它作为“局部视图”放在“布局”中,但我不能这样做因为它必须在{{1无论如何,所以当我调用<body>
时,它应该被渲染。与 Navigation 相同,它与身体有某种关系,但我想把它分开作为一个独立运行的外部控件,并根据URL中的信息显示信息。
我该如何处理?
更新,请阅读:关于CSS和HTML的问题不是,这不是关于如何布局,而是如何使用Razor工具来做到这一点,这是关于Razor @RenderBody()
和RenderBody
。
当我从控制器返回结果时,我想将图片中标记为“body”的内容和“side bar”作为一个部分返回,我想避免重复顶部条形码。有没有办法创建一个“ChildView”,它继承自“ParentView”,这来自“Layout”,当我返回“View(”ChildView“)时,屏幕是自动构建的?
答案 0 :(得分:10)
该教程的最后一部分描述了如何使用Html.RenderAction()方法设计布局以包含部分视图。另请参阅Html.RenderSection()方法。
答案 1 :(得分:10)
关于使用Razor进行布局的帖子非常棒:ASP.NET MVC 3: Layouts with Razor。
基本上你的结构将是:
1)_ViewStart.cshtml(这将指向一个布局和你所有人的观点将分享的其他东西);
2)一个.cshtml,它将是你的布局,即:_Layout.cshtml(类似于Site.Master网页)。
在_Layout.cshtml内部,您将放置HTML布局,例如:
<body>
<div id="maincontainer">
<div id="topsection">
<div class="topbar">
<h1>Header</h1>
<div id="logindisplay">
@Html.Partial("_LogOnPartial")
</div>
</div>
<div class="nav">
<ul><li>Home</li></ul>
</div>
</div>
<div id="contentwrapper">
<div id="contentcolumn">
<div class="body">
@RenderBody()
</div>
</div>
</div>
<div id="sidebar">
<b>Side bar</b>
</div>
<div id="footer">Footer</div>
</div>
</body>
看到我把@RenderBody()放在div“#body”中,所以当我的控制器返回一个ActionResult时,只有这个div会用结果更新。