【发布时间】:2013-09-06 01:36:54
【问题描述】:
我有一个页面,您需要登录才能观看它。所以我想试试这段代码:
<!DOCTYPE html>
<html lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<title>@ViewBag.Title - Meine ASP.NET MVC-Anwendung</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
@Styles.Render("~/Content/css")
@if (!Request.IsAuthenticated) {
@Styles.Render("~/Content/signin")
}
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@if (Request.IsAuthenticated) {
<header class="navbar navbar-fixed-top" role="banner">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../">Home</a>
</div>
<nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation">
<ul class="nav navbar-nav">
<li class="active">
<a href="#">Link 1</a>
</li>
<li>
<a href="#">Link 2</a>
</li>
<li>
<a href="#">Link 3</a>
</li>
<li>
<a href="#">Link 4</a>
</li>
<li>
<a href="#">Link 5</a>
</li>
</ul>
</nav>
</div>
</header>
<div id="body">
@RenderBody()
</div>
} else {
@RenderBody()
}
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/bootstrap")
<footer>
<p>© @DateTime.Now.Year - Meine ASP.NET MVC-Anwendung</p>
</footer>
</body>
</html>
但是当我开始这个时,我得到了这个异常
The RenderBody-Method wasn't called for the layoutpage "~/Views/Shared/_Layout.cshtml"
如何让 razor 忽略 RenderBody 方法?
【问题讨论】:
-
你不能。你所做的也没有意义。您还应该向未经身份验证的用户显示一些内容..
-
是的,未经身份验证的用户会得到一个登录表单,如我的代码所示;)
-
仍然另一个西蒙是对的,你试图做的事情没有意义:它是布局页面,它是从内容页面调用来显示布局内的东西(目标是 drum roll 以获得一致的布局)您需要在某个点或另一个点渲染身体。你想在这里做什么?
-
我想避免人们在登录之前甚至看到导航。
-
有道理,那你为什么不告诉 razor 在哪里渲染页面的其余部分?
标签: c# asp.net-mvc asp.net-mvc-4 razor