Asp.net mvc 如何使用MVC3 Razor布局页面?

Asp.net mvc 如何使用MVC3 Razor布局页面?,asp.net-mvc,asp.net-mvc-3,layout,razor,Asp.net Mvc,Asp.net Mvc 3,Layout,Razor,我一直在阅读有关布局、剖面、视图和局部视图的内容,但我真的不知道如何处理这样的布局示例: 顶酒吧:就像那个酒吧一样 Facebook已经占据了榜首。我会控制住 认证信息和 常规选项和菜单 导航栏:将包含 关于你在哪里的信息,以及 你能去哪里。也是“搜索” 盒子 正文:实际需要的信息 侧栏:将包含相关的 有关中的内容的信息 身体 页脚:版权、许可证和其他东西 像那样 正文将是一个“视图”,边栏将是一个“部分”,页脚将是“布局”中的静态HTML,但是。。。什么是顶部栏和导航 顶栏与任何内容都不

我一直在阅读有关布局、剖面、视图和局部视图的内容,但我真的不知道如何处理这样的布局示例:

  • 顶酒吧:就像那个酒吧一样 Facebook已经占据了榜首。我会控制住 认证信息和 常规选项和菜单

  • 导航栏:将包含 关于你在哪里的信息,以及 你能去哪里。也是“搜索” 盒子

  • 正文:实际需要的信息

  • 侧栏:将包含相关的 有关中的内容的信息 身体

  • 页脚:版权、许可证和其他东西 像那样

正文将是一个“视图”,边栏将是一个“部分”,页脚将是“布局”中的静态HTML,但是。。。什么是顶部栏和导航

顶栏与任何内容都不相关,所以我会将其作为“布局”中的“局部视图”,但我不能这样做,因为它必须位于
内部,所以当我调用
@RenderBody()
时,它应该被渲染。导航也是一样,它与主体有某种联系,但我想把它作为一个外部控件单独使用,它自己运行,并根据URL中的信息显示信息

我应该如何处理这个问题

更新,请阅读:问题不是关于CSS和HTML的,不是关于如何布局,而是如何使用Razor工具来完成,而是关于Razor
RenderBody
PartialView

当我从控制器返回结果时,我只想返回图片中标记为“body”和“side bar”的部分,我希望避免重复顶部的条形码。有没有一种方法可以创建一个从“父视图”继承而来的“子视图”以及从“布局”继承而来的“子视图”,当我返回“视图”(“子视图”)时,屏幕会自动生成?

查看


该教程的最后一部分介绍了如何使用Html.RenderAction()方法设计布局以包含局部视图。另请参见Html.RenderSection()方法。

有一篇关于Razor布局的文章:

基本上,您的结构是:
1) _ViewStart.cshtml(它将指向所有视图共享的布局和其他内容);
2) A.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>

标题
@Html.Partial(“\u lognPartial”)
  • 家庭
    • @RenderBody() 侧栏 页脚

请注意,我将@RenderBody()放在div“#body”中“,因此,当我的控制器返回ActionResult时,只有该div将被更新为结果。

好的,多亏了您的示例,我现在明白了@RenderBody不仅仅用于渲染标记,它还渲染主子视图,因此我可以用html编写主体代码,将PartialView放在任何我想要的地方,并使用RenderBody渲染示例中的白色填充区域。