Краткий ответ: закрывающий тег </table>
должен быть размещен вне цикла foreach
.
Длинный ответ: Вы должны поместить Model.Count > 0
вне цикла foreach
, так как в момент ввода блока кода в цикле, Model.Count > 0
всегда оценивается как true, потому что у вас есть по крайней мере один предмет.
Если - и только если - ваша модель содержит какие-либо элементы, вы распечатываете заголовок таблицы. После этого вы добавляете одну строку для каждого item
в Model
. И <table>
, и </table>
должны находиться на одном и том же уровне вложенности.
@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.UserName.Replace('.', ' ')
) из вида в соответствующее действие контроллера.