如何使用MVC3 Razor布局页面?

vto*_*ola 16 asp.net-mvc layout razor asp.net-mvc-3

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

在此输入图像描述

  • 顶级酒吧:就像Facebook拥有的酒吧一样.我将包含身份验证信息和一般选项和菜单.

  • 导航栏:将包含有关您的位置以及您可以去哪里的信息.也是一个"搜索"框.

  • 正文:实际需要的信息.

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

  • 页脚:版权,许可和类似的东西.

正文将是"视图",侧边栏将是"部分",页脚将是"布局"中的静态HTML,但是...什么是顶部栏和导航

顶部栏与任何东西都没有关联,所以我会把它作为"局部视图"放在"布局"中,但我不能这样做,因为它必须在里面<body>,所以当我打电话时@RenderBody(),它应该被渲染.与导航一样,它与身体有某种关系,但我想把它分开作为一个外部控件,它自己运行并根据URL中的信息显示信息.

我该怎么做呢?

更新,请阅读:问题不是关于CSS和HTML,它不是关于如何布局,而是如何使用Razor工具来做,它是关于Razor RenderBodyPartialView.

当我从控制器返回一个结果时,我想返回图片中标记为"body"的内容,并将"side bar"作为一个部分返回,我想避免重复顶部条形码.有没有办法创建一个"ChildView",它继承自"ParentView",这来自"Layout",当我返回"View("ChildView")时,屏幕是自动构建的?

ryc*_*ell 10

查看MVC3音乐商店教程

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


小智 10

关于Layouts with Razor的帖子很棒:ASP.NET MVC 3:使用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>
Run Code Online (Sandbox Code Playgroud)

看到我把@RenderBody()放在div"#body"中,所以当我的控制器返回一个ActionResult时,只有这个div会用结果更新.