值不能为 null 或为空:参数名称:linkText。 MVC

问题描述 投票:0回答:1

下面是我在视图和控制器中的表,不知道为什么它在 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>

但我希望它能清楚地导航到细节。

c# asp.net-mvc asp.net-core
1个回答
0
投票

根据您发现的错误消息,它说 linkText 不能为空。

ActionLink 的第一个参数是 Linktext,这意味着 item.tbl_main.user_logged_in 为 null,这导致了此问题。

enter image description here

要解决这个问题,有两种方法,首先检查控制器内部的

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>
        }
© www.soinside.com 2019 - 2024. All rights reserved.