C# if语句中的RenderBody()方法?
我有一个项目,有很多视图都有相同的布局,所以我使用_ViewStart使它们都有相同的布局。在该布局中,我使用@RenderBody()用页面内容填充布局。这很有效 现在我尝试将@RenderBody()放入if语句中。在else语句中,我添加了一些html。看起来是这样的:C# if语句中的RenderBody()方法?,c#,asp.net-mvc,razor,layout,C#,Asp.net Mvc,Razor,Layout,我有一个项目,有很多视图都有相同的布局,所以我使用_ViewStart使它们都有相同的布局。在该布局中,我使用@RenderBody()用页面内容填充布局。这很有效 现在我尝试将@RenderBody()放入if语句中。在else语句中,我添加了一些html。看起来是这样的: ...*/ @if (condition == true) { @RenderBody() } else { <p>Some text if the c
...*/
@if (condition == true) {
@RenderBody()
} else {
<p>Some text if the condition is false</p>
}
/*...
*/
@如果(条件==true){
@RenderBody()
}否则{
如果条件为false,则显示一些文本
}
/*...
当我运行此代码且条件为false时,我得到以下错误:
System.Web.HttpException:尚未为布局页面“~/Views/Shared/\u BasicLayout.cshtml”调用“RenderBody”方法
所以我的问题是:
如何将@RenderBody()放入if语句中
根据要求,以下是整个机构:
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li @(@ViewBag.Title == "Films" ? "class=active" : "")>@Html.ActionLink("Films", "List", "FilmSelectie")</li>
<li @(@ViewBag.Title == "Index" ? "class=active" : "")>@Html.ActionLink("Voorstellingen", "Index", "Voorstelling")</li>
<li @(@ViewBag.Title == "Nieuwsbrief" ? "class=active" : "")>@Html.ActionLink("Nieuwsbrief", "Nieuwsbrief", "Nieuwsbrief")</li>
<li @(@ViewBag.Title == "Contact" ? "class=active" : "")>@Html.ActionLink("Contact", "ContactBreda", "Contact")</li>
<li @(@ViewBag.Title == "Login" ? "class=active" : "")>@Html.ActionLink("Login", "Login", "User")</li>
</ul>
</div>
</div>
</nav>
<div class="row panel" style="display:block; box-shadow: none;margin-top:5px;margin:0;margin-left:0px;">
<div id="film informatie" class="col-xs-3">
</div>
<div class="col-xs-8" style="display:block; box-shadow:none; margin-top:20px;">
@if (0 == 1) {
@RenderBody()
} else {
<h2>Geen toegang!</h2>
<p>U heeft geen toegang tot deze pagina. Log in met een geschikt account om op deze pagina te komen.</p>
}
</div>
</div>
<footer>
<div class="panel-footer" style="display:block; text-align:center;">
<p>
© 2015 Cinema Jam || Chasséveld 1, Breda ||
<a href="https://www.facebook.com/CinemaJamBreda" target="_blank"><img style="width:20px; height:20px;" src="~/Content/facebook.png" alt="CinemaJam FacebookPagina"></a>
<a href="https://twitter.com/CinemaJamB3" target="_blank"><img style="width:20px; height:20px;" src="~/Content/twitter.png" alt="CinemaJam TwitterPagina"></a>
</p>
</div>
</footer>
- @Html.ActionLink(“Films”、“List”、“FilmSelectie”)
- @Html.ActionLink(“Voorstellingen”、“Index”、“Voorstelling”)
- @Html.ActionLink(“Nieuwsbrief”、“Nieuwsbrief”、“Nieuwsbrief”)
- @Html.ActionLink(“Contact”、“ContactBreda”、“Contact”)
- @Html.ActionLink(“Login”、“Login”、“User”)
@如果(0==1){
@RenderBody()
}否则{
吉恩·托冈!
你在帕吉纳的一家商店买了一本书。从帕吉纳的一家商店登录到一个帐户
}
©2015年电影节卡塞维德1号,布雷达||
(不知何故,我无法在堆栈溢出中粘贴头和正文的开头,它包含对引导的引用)此问题的解决方案是使用[Authorize]。我现在将学习本教程:
多亏了DionV。您想检查什么情况,为什么?似乎您试图在布局中加入逻辑,而这些逻辑属于您的视图。您能告诉我们您的
\u basiclayot.cshtml
是什么样子吗?创建了一个测试项目,我可以轻松地从\u Layout.cshtml
中删除@RenderBody()
。我正在尝试在每个页面上添加一个检查,检查用户是否可以访问它。@Janneman96您使用的是哪个版本的MVC?您是否有充分的理由不使用?这是一个示例。当你应该首先说明解决方案的原因时,你询问了你提出的解决方案。不,你这样做不是个好主意。在MVC中,有一些处理授权的成熟方法,其中之一就是上面提到的[Authorize]
属性。看看那些!