C# 我在我的_Layout.cshtml页面中有if-else循环,但是当我尝试运行它时,它会给我RenderBody错误提示,RenderBody已经被调用了
我已经附上下面的代码,请看,我是一个新手,这将是非常好的,如果你在代码后,请C# 我在我的_Layout.cshtml页面中有if-else循环,但是当我尝试运行它时,它会给我RenderBody错误提示,RenderBody已经被调用了,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我已经附上下面的代码,请看,我是一个新手,这将是非常好的,如果你在代码后,请 <!DOCTYPE html> <html> <head> @model Forecaster.Models.ForecastModel <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title
<!DOCTYPE html>
<html>
<head>
@model Forecaster.Models.ForecastModel
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - Forecaster</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
</head>
<body>
@for (int i = 0; i < Model.UsersInfoList.Count(); i++)
{
<div class="navbar" role="main" style="margin-bottom:-50px;">
<div class="navbar-header">
<a class="navbar-brand" href="#"><img src="~/Images/logo.jpg" alt="Forecaster" style="padding-left:inherit;"></a>
</div>
@if ((Model.UsersInfoList[i].RoleId == 1) && (Model.UsersInfoList[i].UserName == Session["UserName"].ToString()))
{
<ul class="nav navbar-nav">
<li>@Html.ActionLink("HOME", "Dashboard", "Dashboard")</li>
<li>@Html.ActionLink("Employee", "Index", "EmployeeMasters")</li>
<li>@Html.ActionLink("Project", "Index", "ProjectMasters")</li>
<li>@Html.ActionLink("Export", "ExportToExcel", "Dashboard")</li>
</ul>
<ul class="nav navbar-nav" style="float:right; padding-right:59px;">
<li>
@Html.ActionLink("Logout", "UserDashboard", "Login")
</li>
</ul>
<p class="navbar-text navbar-right">
<a href="#">
<span class="glyphicon glyphicon-user"></span> @if (Session["UserName"] != null)
{<text>@Session["UserName"].ToString() </text> }
</a>
</p>
}
else
{
<ul class="nav navbar-nav">
<li>@Html.ActionLink("HOME", "Dashboard", "Dashboard")</li>
<li>@Html.ActionLink("Project", "Index", "ProjectMasters")</li>
</ul>
<ul class="nav navbar-nav" style="float:right; padding-right:59px;">
<li>
@Html.ActionLink("Logout", "UserDashboard", "Login")
</li>
</ul>
<p class="navbar-text navbar-right">
<a href="#">
<span class="glyphicon glyphicon-user"></span> @if (Session["UserName"] != null)
{<text>@Session["UserName"].ToString() </text> }
</a>
</p>
}
</div>
<div class="container" style="margin-top:45px;">
@RenderBody()
<hr />
<div class="col-lg-pull-10">
<footer></footer>
</div>
</div>
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
}
@模型预报员
@取景袋。标题-预报员
@style.Render(“~/Content/css”)
@Scripts.Render(“~/bundles/modernizer”)
@Scripts.Render(“~/bundles/jquery”)
@对于(int i=0;i
@ActionLink(“主页”、“仪表板”、“仪表板”)
@ActionLink(“员工”、“索引”、“员工主管”)
@ActionLink(“项目”、“索引”、“项目管理员”)
@ActionLink(“导出”、“导出到Excel”、“仪表板”)
-
@ActionLink(“注销”、“用户仪表板”、“登录”)
}
其他的
{
- @ActionLink(“主页”、“仪表板”、“仪表板”)
- @ActionLink(“项目”、“索引”、“项目管理员”)
-
@ActionLink(“注销”、“用户仪表板”、“登录”)
}
@RenderBody()
@Scripts.Render(“~/bundles/bootstrap”)
@RenderSection(“脚本”,必需:false)
}
请告诉我我做错了什么?我需要在这两种情况下授权用户和renderbody!
谢谢 你的for循环一直到最后,所以@RenderBody被多次生成。你的for循环中有RenderBody
@for (int i = 0; i < Model.UsersInfoList.Count(); i++)
@for(int i=0;i
您确定Model.UsersInfoList中只有一条记录吗?您下面的部分应该从foreach循环中删除
<div class="container" style="margin-top:45px;">
@RenderBody()
<hr />
<div class="col-lg-pull-10">
<footer></footer>
</div>
</div>
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
@RenderBody()
@Scripts.Render(“~/bundles/bootstrap”)
@RenderSection(“脚本”,必需:false)
这就解释了。。。目前,您正在为该列表中的每个对象调用一次RenderBody。。。。(同时多次呈现脚本部分)。因此,您希望在“退出兴趣”页面的前面关闭for循环。。。为什么会有多个用户?对meOh来说没有多大意义-您正在搜索视图中的所有用户,并与会话进行比较,以查看他们是否是已登录的用户?这是个糟糕的主意。请在控制器中仅使用登录的用户填充您的UsersFolist好的,谢谢您的解释我想我必须对for循环做些什么为什么在foreach循环中使用Scripts.Render、RenderBody和RenderSection?即使您从中删除RenderBody,这些其他部分也会有问题……您建议@BrianMainsPull如何将所有这些都从for循环中删除-for循环的目的是什么?