Asp.net mvc 获取不正确的razor语法错误
我有下面的代码,我想把表头放在@foreach之外,但是当我把它移到外面时,它就看不到结束标记了。谢谢Asp.net mvc 获取不正确的razor语法错误,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我有下面的代码,我想把表头放在@foreach之外,但是当我把它移到外面时,它就看不到结束标记了。谢谢 @foreach (var item in Model) { <div class="data" ><label for="fullName" >Name: </label>@item.UserName.Replace('.', '')</div> if (Model.Count > 0) { &
@foreach (var item in Model)
{
<div class="data" ><label for="fullName" >Name: </label>@item.UserName.Replace('.', '')</div>
if (Model.Count > 0)
{
<table class="data">
<tr>
<th>
Work Date
</th>
<th>
Change Details
</th>
<th>
Ip Address
</th>
<th></th>
</tr>
<tr>
<td>
@{
var stringDate = item.WorkDate.ToShortDateString();
}
@Html.DisplayFor(modelItem => stringDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.ChangeDetail)
</td>
<td>
@Html.DisplayFor(modelItem => item.IpAddress)
</td>
</tr>
</table>
}
<br />
<hr />
}
所以这是我试图完成的,但无论我用什么方式尝试,它总是给我错误
<table class="data">
<tr>
<th>
Work Date
</th>
<th>
Change Details
</th>
<th>
Ip Address
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<div class="data" ><label for="fullName" >Name: </label>@item.UserName.Replace('.','')</div>
if (Model.Count > 0)
{
<tr>
<td>
@{
var stringDate = item.WorkDate.ToShortDateString();
}
@Html.DisplayFor(modelItem => stringDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.ChangeDetail)
</td>
<td>
@Html.DisplayFor(modelItem => item.IpAddress)
</td>
</tr>
</table>
}
<br />
<hr />
}简短回答:结束标记必须放在foreach循环的外部
详细回答:您应该将Model.Count>0放在foreach循环之外,因为当您在循环中输入代码块时,Model.Count>0总是计算为true,因为您至少有一项
如果(且仅当)模型包含任何项,则打印出表格标题。然后,为模型中的每个项目追加一行。两者都必须发生在相同的嵌套级别内
@if (Model.Count > 0)
{
<table class="data">
<tr>
<th>Date</th>
<th>Change Details</th>
<th>Ip Address</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<div class="data" >
<label for="fullName" >Name: </label>
@item.UserName.Replace('.', ' ')
</div>
@{
var stringDate = item.WorkDate.ToShortDateString();
}
<tr>
<td>@Html.DisplayFor(modelItem => stringDate)</td>
<td>@Html.DisplayFor(modelItem => item.ChangeDetail)</td>
<td>@Html.DisplayFor(modelItem => item.IpAddress)</td>
</tr>
}
</table>
<br />
<hr />
}
你应该考虑移动逻辑@ item。用户名。“替换”,“”从视图中进入相应的控制器动作。
< P>你必须在每个循环的外面有你的表结束标签。< / P>哇,我感觉不知道有20分钟。谢谢