【问题标题】:unable to add one more layout in mvc giving error -The "RenderBody" method has not been called for layout page "~/Views/Shared/MyLayout.cshtml"无法在 mvc 中再添加一个布局并给出错误 - 尚未为布局页面“~/Views/Shared/MyLayout.cshtml”调用“RenderBody”方法
【发布时间】:2016-08-14 06:46:37
【问题描述】:

我添加了创建并添加了一种布局以供查看。渲染该视图时出现错误。

尚未为布局页面“~/Views/Shared/MyLayout.cshtml”调用“RenderBody”方法。

控制器

public ActionResult MyPage()
{
    ViewBag.Message = "My Page.";
    return View();
}

查看

@{
    ViewBag.Title = "MyPage";
    Layout = "~/Views/Shared/MyLayout.cshtml";
}
<h2>MyPage</h2>

布局

@{
    Layout = null;
} 
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>MyLayout</title>
</head>
<body>
    <div> 
        <h1>Its My Layout Page....</h1>
    </div>
</body>
</html>

【问题讨论】:

  • 错误信息一目了然。您需要在布局中添加@RenderBody()
  • 谢谢我明白了....对不起,我是 mvc 新手
  • 我有一个疑问。我必须将@RenderBody().div 的开始或 div 的结尾或 div 中的任何位置或正文中的任何位置放在哪里
  • 任何你想要的地方。它充当占位符,用于定义您希望将视图生成的 html 放置在布局中的哪个位置。

标签: asp.net-mvc layout view


【解决方案1】:

您的布局应该如下所示:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>MyLayout</title>
</head>
<body>
    <div> 
        <h1>Its My Layout Page....</h1>
    </div>
   <div id="content">
       @RenderBody()
    </div>
</body>
</html>

编辑

因此,您可以在布局中设置您想要使用的 CSS 样式,其他页面可以继承这些样式。 您可以在布局中的任何位置呈现其他页面的正文,就像我在下面所做的那样

<div id="content">
...
</div>

【讨论】:

    猜你喜欢
    • 2017-01-11
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多