使用Razor“RenderPartial”和“RenderBody”,正文呈现在顶部

时间:2012-10-23 15:19:53

标签: asp.net-mvc-3 layout razor renderpartial

我正在使用标题主菜单正文页脚部分开发网站。
我正在使用网页基础布局_Layout.cshtml,其中我使用RenderPartial()方法呈现标题,主菜单页脚。对于身体,我使用的是RenderBody()方法 在_Layout.cshtml我有以下代码:

<body style="margin: 0">
<form name="FormStart" method="post" action="Start.aspx" id="FormStart">
<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
    <tr>
        <td valign="top" width="1px"></td>
        <td valign="top" align="center" width="972" bgcolor="#FFFFFF">
            <table id="Table1" cellspacing="0" cellpadding="0" width="972" border="0" bordercolor="yellow">
                 <!-- HEADER -->
                 @{Html.RenderPartial("_Header");}

                 <!-- MAIN MENU -->
                 @{Html.RenderPartial("_Menu");}

                 <!-- CONTENT -->
                 @RenderBody()
             </table>
             <br />
             <!-- FOOTER -->
             @{Html.RenderPartial("_Footer");}
         </td>
    </tr>
</table>
</form>
</body>

另一方面,我使用以下代码

创建了一个非常简单的视图
@{
    ViewBag.Title = "Page";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h3>You just clicked </h3><h1>NATURAL ALOE SECTION</h1>

问题是,这个简单视图的内容显示在页面的最顶部,而其余部分显示在底部。它不是显示 HEADER-MAINMENU- 我的网站 -FOOTER ,而是按 我的网站 -HEADER-MAINMENU-FOOTER的顺序显示即可。

我对MVC很新;我一直在阅读here关于在我的主布局网站中使用RenderSection而不是RenderPartial的可能性,但这可能是它以这种方式显示的原因吗?可能我离基地很近,任何建议都非常感谢。

提前致谢。

2 个答案:

答案 0 :(得分:2)

这可能会发生,因为您在<table>内呈现标题菜单正文。至少 body 似乎缺少行和单元格标记(<tr><td>...</td></tr>)。因此,表中没有行和单元格会导致各种渲染问题。

如果您没有渲染到表中并使用CSS进行布局,那么它可能会有所帮助。

答案 1 :(得分:0)

这看起来与你正在做的MVC方面无关 - 看起来非常好。

问题出在您的HTML上。我建议使用其中一个浏览器开发人员工具查看该网站(例如在Chrome或IE中打开您的网站并按F12) - 您可以使用这些功能来检查网页上的可视元素与HTML的关系。这些工具作为MVC程序员非常宝贵。

不鼓励使用表来控制网页的布局,而是使用css进行布局。您可以通过Google找到一些基本的CSS布局模板,以便开始使用。

相关问题