C# 条件语句适用,但不显示链接
我有以下cshtml,但它不会在条件语句中显示用于编辑和删除的链接。我已经通过了,这句话似乎是适用的,当涉及到我自己时,我得到了一个匹配,但我没有看到最终结果中的链接。这就像它忽略了括号内的内容,但在调试中直接通过括号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
@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>
}