我有以下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 :(得分: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 })
}
答案 1 :(得分:0)
你需要让Razor知道这些是可执行语句。您也没有正确使用DisplayText,它旨在显示属性的值。因为管道只是纯文本,所以将其包装在<text>...</text>
中,只显示文字值。
@if (User.Identity.Name == item.email)
{
@Html.ActionLink("About", "About")
<text>|</text>
@Html.ActionLink("About", "About")
}
答案 2 :(得分: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>
}