【发布时间】:2018-04-09 14:45:28
【问题描述】:
由于我是 MVC Razor 的新手,我未能找到一种有效的方法来实现我想做的事情: 我的目的是在 chtml 视图中显示两列,一列用于标题,另一列用于其链接,只有当它有链接时,标题才必须显示为链接。
我试过了:
@model PaginatedList<MyProject.Models.Todo>
@foreach (var item in Model) {
<tr>
<td>
@{
int? length = @Html.DisplayFor(modelItem => item.Link).ToString()?.Length;
}
@if (length is null)
{
@Html.DisplayFor(modelItem => item.Title)
}
else
{
<a href="@Html.DisplayFor(modelItem => item.Link)" target=_blank>
@Html.DisplayFor(modelItem => item.Title)
</a>
}
</td>
<td>
<a href=@Html.DisplayFor(modelItem => item.Link) target="_blank">@Html.DisplayFor(modelItem => item.Link)</a>
</td>
</tr>
使用上面的代码,尽管相应的链接字段为空,但标题显示为链接。如何纠正?
【问题讨论】:
-
@length 总是得到相同的值,并且它不为空。
-
如果将
int? length = @Html.DisplayFor(modelItem => item.Link).ToString()?.Length;替换为int? length = item?.Link?.Length;,究竟会发生什么? -
现在它可以工作了,@length 值发生了变化,并且所需的标题没有获得链接格式。
标签: c# html asp.net-mvc razor