2016-05-05 82 views
-1

到目前爲止我只有1天的經驗,在ASP.NET MVC中我是一個完整的新手。在列表視圖中顯示列引用列表

我想顯示一個員工名單以及他們的部門。我爲員工和部門提供了單獨的表格(我正在使用Entity Framework 6和Database First體系結構)。

enter image description here

這是從數據庫中生成的代碼。

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> 

然而,當我運行應用程序,部門名稱顯示爲空白。其他字段正確顯示。

注意:我可以使用部門的下拉菜單插入員工,如屏幕截圖所示。我只是不明白爲什麼列表視圖模式不起作用。

enter image description here

回答

0

哦,不,我做了一個非常愚蠢的錯誤。

在我的控制器的Create方法的參數列表中,失蹤了。

public ActionResult Create([Bind(Include = "employeeid,employeename,designation,departmentid")] employee employee) 

我注意到它後,我檢查數據庫從SQL Server Studio中,看到該detamentid字段被保存爲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()); 
    }