c# - 如何加载两个模型以在 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>
期望结果与分配给员工的规定访问级别一起填充员工信息。
解决方案
你应该使用这个:
EmployeeList = dbModel.userdetails.Include(x => x.accesslevels).ToList();
代替:
EmployeeList = dbModel.userdetails.ToList<userdetail>();
推荐阅读
- c# - System.ArgumentOutOfRangeException: '指定的参数超出了有效值的范围。参数名称:asp.net中的index'
- excel - 如何获取每个下载的 Workbook 的数据?
- react-native - this.text = 'a' 与 this.setState({text:a'}) 有什么不同
- docker - Kubernetes YAML 为同一个 pod 中的多个图像部署?
- java - 我有错误检查手册对应的mysql服务器版本
- powershell - PowerShell 作业完成但不创建输出
- firebase - 创建一个自定义 Firebase 数据消息处理程序 vue,在推送通知上回复原始应用程序
- javascript - 在 React.js 中实现自己的本地化引擎——值得吗?
- python - Python Pandas - 查找元素在行数组中的行
- google-cloud-platform - 云 sql 代理在 docker 容器中不起作用