到目前为止,我是ASP.NET MVC的完全新手,只有1天的经验。
我正在尝试显示员工及其部门的列表。我为员工和部门设置了单独的表(我使用的是Entity Framework 6和Database First架构)。
这是从数据库生成的代码。
public partial class employee
{
public int employeeid { get; set; }
public string employeename { get; set; }
public string designation { get; set; }
public Nullable<int> departmentid { get; set; }
public virtual department department { get; set; }
}
在我的员工控制器中,我有我的索引页面的代码
public ActionResult Index()
{
IQueryable<employee> employees = db.employees
.Include(d => d.department);
return View(employees.ToList());
}
在我的Razor视图中,我有这段代码
<td>
@Html.DisplayFor(modelItem => item.employeename)
</td>
<td>
@Html.DisplayFor(modelItem => item.designation)
</td>
<td>
@Html.DisplayFor(modelItem => item.department.departmentname)
</td>
但是,当我运行应用程序时,部门名称显示为空白。其他字段正确显示。
注意:我可以使用部门下拉列表插入员工,如屏幕截图所示。我只是不明白为什么列表视图模式不起作用。
答案 0 :(得分:0)
哦,不,我犯了一个非常愚蠢的错误。
在我的控制器的Create方法的参数列表中,缺少了departmentid。
public ActionResult Create([Bind(Include = "employeeid,employeename,designation,departmentid")] employee employee)
我在从SQL Server Studio检查数据库后发现它已经注意到了,并且看到了离开的字段被保存为NULL。
而且,我意识到而不是
public ActionResult Index()
{
IQueryable<employee> employees = db.employees
.Include(d => d.department);
return View(employees.ToList());
}
只有以下代码就够了
public ActionResult Index()
{
return View(db.employees.ToList());
}