2016-12-14 2 views
1

У меня есть следующий cshtml, но он не отображает ссылки для редактирования и удаления внутри условного оператора. Я прошел, и кажется, что заявление применяется, и я получаю соответствие, когда дело доходит до меня, но я не вижу ссылки в конечном результате. Это похоже на то, что он игнорирует то, что находится внутри скобок, но проходит через них в отладке.Условное заявление применяется, но ссылки не отображаются

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.FirstName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.LastName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.email) 
     </td> 
     <td> 
      @if (User.Identity.Name == item.email) 
      { 
       Html.ActionLink("Edit", "Edit", new { id = item.PersonId }); 
       Html.DisplayText("|"); 
       Html.ActionLink("Delete", "Delete", new { id = item.PersonId }); 
      } 
     </td> 
    </tr> 
} 
+0

Всегда надевайте их, но условно имеют htmlAttribute из "дисплея: нет;" –

+0

@NathanMcKaskle Я предполагаю, что движок Razor интерпретирует содержимое скобки if как C#, а не HTML. Попробуйте обернуть ссылки в теге . – Tobias

+0

@AlfieGoodacre есть ли у вас пример этого? –

ответ

1

Проблема в том, что упомянул Тобиас. Ваш код внутри оператора if распознается как C# вместо HTML. Удалите точку с запятой и добавьте @ перед каждым из утверждений, и они должны отобразиться должным образом.

@if (User.Identity.Name == item.email) 
{ 
    @Html.ActionLink("Edit", "Edit", new { id = item.PersonId }) 
    <text> | </text> 
    @Html.ActionLink("Delete", "Delete", new { id = item.PersonId }) 
} 
+0

Это не будет отображаться, так как он хочет отформатировать его. «|» Не будет отображаться. – Tyriddik

+0

Спасибо, теперь его нужно исправить. Я просто сосредоточился на ссылках, так как это часть, упомянутая в вопросе. – Shelby115

0

Необходимо, чтобы Razor знал, что это исполняемые операторы. Вы также не используете DisplayText правильно, он предназначен для отображения значения свойства. Поскольку труба представляет собой просто текст, оберните ее в <text>...</text> и просто покажите буквальное значение.

@if (User.Identity.Name == item.email) 
{ 
    @Html.ActionLink("About", "About") 
    <text>|</text> 
    @Html.ActionLink("About", "About") 
} 
0

Вы можете сделать это двумя способами.

<td> 
    @if (User.Identity.Name == item.email) 
    { 
     <div> 
      @Html.ActionLink("Edit", "Edit", new { id = item.PersonId }) 
      | 
      @Html.ActionLink("Delete", "Delete", new { id = item.PersonId }) 
     </div> 
    } 
</td> 

или

@if (User.Identity.Name == item.email) 
{ 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id = item.PersonId }) 
     | 
     @Html.ActionLink("Delete", "Delete", new { id = item.PersonId }) 
    </td> 
} 
else 
{ 
    <td></td> 
}