Получение неверных синтаксических ошибок бритвы - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть следующий код, и я хочу поместить заголовки таблицы за пределы @foreach, но когда я перемещаю его за пределы, он больше не видит закрывающий тег.Спасибо

@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 />

}

Так что это своего рода то, чего я пытаюсь достичь, но это продолжает давать мне ошибки, независимо от того, каким образом я это пробую.1008 *}

Ответы [ 2 ]

4 голосов
/ 23 сентября 2011

Вы должны иметь закрывающий тег таблицы вне для каждого цикла.

3 голосов
/ 23 сентября 2011

Краткий ответ: закрывающий тег </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('.', ' ')) из вида в соответствующее действие контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...