2016-05-05 13 views
-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()); 
    } 

のためにそして、私のかみそりビューでこのコードを持って、私は

<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

ああ、私は非常に愚かなミスを犯しました。

コントローラのmy Createメソッドのパラメータリストに、departmentidがありませんでした。

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

SQL Server Studioからデータベースをチェックして、departmentidフィールドがNULLとして保存されていることがわかりました。

また、Iは代わりに

public ActionResult Index() 
{ 
    IQueryable<employee> employees = db.employees 
     .Include(d => d.department); 

    return View(employees.ToList()); 
} 

のみ次のコードがあったことに気づい十分

public ActionResult Index() 
    { 
     return View(db.employees.ToList()); 
    } 
関連する問題