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

C# 条件语句适用,但不显示链接,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我有以下cshtml,但它不会在条件语句中显示用于编辑和删除的链接。我已经通过了,这句话似乎是适用的,当涉及到我自己时,我得到了一个匹配,但我没有看到最终结果中的链接。这就像它忽略了括号内的内容,但在调试中直接通过括号 @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.FirstName) </t

我有以下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>
}   
@foreach(模型中的变量项){
@DisplayFor(modelItem=>item.FirstName)
@DisplayFor(modelItem=>item.LastName)
@DisplayFor(modelItem=>item.email)
@if(User.Identity.Name==item.email)
{
ActionLink(“编辑”、“编辑”,新的{id=item.PersonId});
Html.DisplayText(“|”);
ActionLink(“删除”,“删除”,新的{id=item.PersonId});
}
}   

问题正如托拜厄斯所提到的。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 })
}
@if(User.Identity.Name==item.email)
{
@ActionLink(“编辑”,“编辑”,新的{id=item.PersonId})
| 
@ActionLink(“删除”,“删除”,新的{id=item.PersonId})
}

您需要让Razor知道这些是可执行语句。您也没有正确使用DisplayText,它的目的是显示属性的值。因为管道只是纯文本,所以将其包装在
中并仅显示文本值

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

您可以通过两种方式完成此操作

<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)
{
@ActionLink(“编辑”,“编辑”,新的{id=item.PersonId})
|
@ActionLink(“删除”,“删除”,新的{id=item.PersonId})
}

@if(User.Identity.Name==item.email)
{
@ActionLink(“编辑”,“编辑”,新的{id=item.PersonId})
|
@ActionLink(“删除”,“删除”,新的{id=item.PersonId})
}
其他的
{
}

总是把它们放进去,但有条件地有一个htmlAttribute“display:none;”@NathanMcKaskle我的猜测是Razor引擎将if括号的内容解释为C#,而不是HTML。尝试将链接包装在标记中。@AlfieGoodacre你有这样的例子吗?
@{bool isEmail=User.Identity.name==item.email;Html.ActionLink(“编辑”、“编辑”,new{id=item.PersonId,style=“display:+isEmail?”block:“无”);//etc}
@Tobias我明白了,将尝试这条路线。如果出于某种原因,我删除分号并在每行的开头添加@,它似乎也会显示出来。虽然它的格式不好。这不会显示为他想要的格式。“|”将不显示。谢谢,现在应该更正它。我只是把重点放在链接上,因为这是问题中提到的部分。
@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>
}