下面是我在视图和控制器中的表,不知道为什么它在 mainId 的最后一列上给出空错误。
这是我在视图中的表格:
@model IEnumerable<ListViewModel>
<table class="table table-bordered table-striped">
<thead class="thead-dark text-white">
<tr>
<th>id</th>
<th>Created By</th>
<th>Date</th>
<th>More detail ...</th>
</tr>
</thead>
<tbody>
@foreach (var item in @Model)
{
<tr class="table-primary">
<td>@item.tbl_saved.rowid </td>
<td>@item.tbl_main.user_logged_in</td>
<td>@item.tbl_saved.date_created</td>
<td>@Html.ActionLink(item.tbl_main.user_logged_in, "Details", "Home", new { mainId = item.tbl_main.Id }, null)</td>
</tr>
}
</tbody>
</table>
此表的控制器:
var query = from pd in _context.tbl_main
join p in _context.tbl_saved on pd.Id equals p.mainId
orderby p.rowid
select new ListViewModel { tbl_main = pd, tbl_saved = p };
return View(query);
当我注释掉这一点时,表格加载得很好:
<td>@Html.ActionLink(item.tbl_main.user_logged_in, "Details", "Home", new { mainId = item.tbl_main.Id }, null)</td>
但我希望它能清楚地导航到细节。
根据您发现的错误消息,它说 linkText 不能为空。
ActionLink 的第一个参数是 Linktext,这意味着 item.tbl_main.user_logged_in 为 null,这导致了此问题。
要解决这个问题,有两种方法,首先检查控制器内部的
query
,确保tbl_main.user_logged_in
不为空。
第二种方法是编写一个条件来检查视图中的
tbl_main.user_logged_in
是否为空,如下所示:
@foreach (var item in @Model)
{
<tr class="table-primary">
<td>@item.tbl_saved.rowid </td>
<td>@item.tbl_main.user_logged_in</td>
<td>@item.tbl_saved.date_created</td>
<td>
@if (!string.IsNullOrEmpty(item.tbl_main.user_logged_in))
{
@Html.ActionLink("Details", "Details", "Home", new { mainId = item.tbl_main.Id }, null)
}
else
{
<text>N/A</text> <!-- or any other placeholder or message -->
}
</td>
</tr>
}