条件语句适用但链接不显示

时间:2016-12-14 15:50:56

标签: c# asp.net-core-mvc

我有以下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>
}   

3 个答案:

答案 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>
}