You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC中Roles视图无法访问关联Staffs实体属性如何解决

问题根源

你定义的Roles实体类中Staffs属性是ICollection<Staffs>集合类型,代表一个角色对应多个员工,属于一对多关系里的"多"端集合,自然不能直接调用单个Staffs对象才有的FirstName属性。反过来Staffs实体里的Role是单个Roles对象,属于一对多里的"一"端,所以可以直接访问Role的属性。

你当前控制器里用Include(s => s.Staffs)预加载关联数据的逻辑是正确的,不需要修改。


解决方法

根据你实际的展示需求,选择对应方案即可:

场景1:显示当前角色下所有员工的信息

在视图中嵌套一层循环遍历Staffs集合即可,修改视图的<tbody>部分代码如下:

<tbody>
    @foreach (var role in Model)
    {
        <!-- 判断当前角色有没有关联员工 -->
        if (role.Staffs.Any())
        {
            foreach (var staff in role.Staffs)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(_ => role.Id) / @Html.DisplayFor(_ => role.Name)
                    </td>
                    <td>
                        @Html.DisplayFor(_ => staff.FirstName) @Html.DisplayFor(_ => staff.LastName)
                    </td>
                    <td>
                        <a asp-action="Edit" asp-route-id="@role.Id">Edit</a> |
                        <a asp-action="Details" asp-route-id="@role.Id">Details</a> |
                        <a asp-action="Delete" asp-route-id="@role.Id">Delete</a>
                    </td>
                </tr>
            }
        }
        else
        {
            <!-- 没有关联员工的角色单独显示 -->
            <tr>
                <td>
                    @Html.DisplayFor(_ => role.Id) / @Html.DisplayFor(_ => role.Name)
                </td>
                <td>
                    暂无关联员工
                </td>
                <td>
                    <a asp-action="Edit" asp-route-id="@role.Id">Edit</a> |
                    <a asp-action="Details" asp-route-id="@role.Id">Details</a> |
                    <a asp-action="Delete" asp-route-id="@role.Id">Delete</a>
                </td>
            </tr>
        }
    }
</tbody>

场景2:仅显示当前角色下第一个员工的信息

如果只需要取集合中第一个员工的属性,需要先取集合中的单个对象,同时做空值判断避免空引用异常:

<td>
    @* 取第一个员工的FirstName,没有员工则显示空 *@
    @Html.DisplayFor(_ => role.Staffs.FirstOrDefault()?.FirstName)
</td>

内容的提问来源于stack exchange,提问作者Ritcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:24:02