首页 > 解决方案 > 如何加载两个模型以在 MVC5 中生成单个输出

问题描述

我有一个基于雇员表的名为雇员的 MVC 控制器。其中一个员工字段具有到访问级别表的外键链接。这两个表都是 MVC 应用程序中的模型(访问和员工)。

当我创建一个视图以列出所有员工时,我收到此错误,它表明它是因为它无法引用访问表/模型中的 accessleveldescription 字段。

我收到错误消息:ObjectContext 实例已被释放,不能再用于需要连接的操作。

我想知道的是如何链接这两者,以便我可以在视图中显示信息?

我知道正在寻找 AccessLevelDescription 视图的人口,此时 DBContext 已关闭,因此出现错误,我只是不确定如何修复它。

阅读了几篇文章,尝试添加 ToList(但可能设置错误),我尝试创建变量来保存 AccessLevelDescription 但仍然无法链接两者。

控制器:

// GET: Employee
        public ActionResult Index()
        {
            List<accesslevel> AccessList = new List<accesslevel>();
            List<userdetail> EmployeeList = new List<userdetail>();
            using (dbEntities dbModel = new dbEntities())
            {

                EmployeeList = dbModel.userdetails.ToList<userdetail>();
                AccessList = dbModel.accesslevels.ToList<accesslevel>();

            }
            return View(EmployeeList);
        }

看法:

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.UserName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.UserEmail)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.UserPassword)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.UserCreateDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.UserLastLogin)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.accesslevel.AccessLevelDescription)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.companydetail.CompanyName)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.UserID }) |
            @Html.ActionLink("Details", "Details", new { id=item.UserID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.UserID })
        </td>

期望结果与分配给员工的规定访问级别一起填充员工信息。

标签: c#asp.net-mvc

解决方案


你应该使用这个:

EmployeeList = dbModel.userdetails.Include(x => x.accesslevels).ToList();

代替:

EmployeeList = dbModel.userdetails.ToList<userdetail>();

推荐阅读