2012-04-27 9 views
0

これを行う方法がわかりません。そこにある例は私に必要なものを理解する助けにはならない。ビューモデルを作成しようとすると、DropDownListを埋め込むデザインパターン

ビューモデル

public class ViewModelAddUser 
{ 
    StudentSchedulingDBContext ssDB = new StudentSchedulingDBContext(); 

    public User User { get; private set; } 
    public SelectList Departments { get; private set; } 

    public ViewModelAddUser() 
    { 
     // Not Sure what to put here 
    } 


} 

表(ジャストコード内のテーブル構造を示すため)

public class Department 
{ 
    public int DepartmentID { get; set; } 
    public string DepartmentName { get; set; } 
} 

コントローラのDBContext

public ActionResult AddUser() 
    { 

     return View(new ViewModelAddUser()); 


    } 

私は残りの部分をどのように形成するかについてはあまりよく分かりません。私は奇妙な人や他の質問をしてきましたが、私はこれを動作させていません。

更新

**View Model:** 


public class ViewModelAddUser 
{ 
    public IEnumerable<SelectListItem> Departments { get; set; } 
} 

コントローラー:

public ActionResult AddUser() 
    { 
     ViewModelAddUser model = new ViewModelAddUser() 
     { 
      Departments = db.Departments.Select(department => new SelectListItem { 
       Value = department.DepartmentID.ToString(), 
       Text = department.DepartmentName 
      }) 
     }; 
     return View(model); 
    } 
+0

この回答を確認してください:http://stackoverflow.com/questions/6623700/how-to-bind-a-selectlist-with-viewmodel –

+0

ええ、それは本当に私を助けません。私が試した他の例のように。私は私のテーブルや私が行方不明のものをマッピングする方法を感じている。 – xivo

答えて

3

ビューモデルは、ビュー内で使用される要素のみを含める必要があります。それはあなたのDBコンテキストを含むべきではありません。同様に、ビューモデルに記述するユーザークラスが、ユーザードメインモデルではなく、ユーザーを作成するためのビューモデルであることを確認します。

私はあなたのビューモデルは、おそらくのようになりますだと思う。また、チェック

@Html.DropDownListFor(m => m.DepartmentId, Model.Departments); 

:ドロップダウンリストを呼び出すには

StudentSchedulingDBContext ssDB = new StudentSchedulingDBContext(); //I'm assuming this can be queried to get your departments. 
ViewModelAddUser model = new ViewModelAddUser() 
{ 
    Departments = ssDB.Departments.Select(department => new SelectListItem { 
     Value = department.departmentID, 
     Text = department.departmentName 
    }), 
    User = //set user here if necessary 
} 

return View(model); 

:ドロップダウンリストを作成するには

public class ViewModelAddUser 
{ 
    public UserViewModel User { get; set; } //depending on what your doing a string containing UserId might suffice here 
    public IEnumerable<SelectListItem> Departments { get; set; } 
    public string DepartmentId { get; set; } // this will be the department set by drop down list 
} 

オースティンが提供したリンクから、その質問に対するダリンの答えがあなたを助けるかもしれない。

+0

それは私にとってはうまくいかないようです。私はDBContextがテーブルのマッピング方法を示しているだけなので、どこに行くのか、なぜ私が間違っているのか理解できません。 – xivo

+0

正確には機能しないのは何ですか?私のコードは、生徒が何を学んでいるのかわからないので、おそらく私のコードはうまくいきません。私はそれが私がそれを使用したのと同じような方法であなたの部門のリストを含んでいたと仮定しました。 – DMulligan

+0

ランタイムエラーが発生しました:辞書に渡されたモデルアイテムが 'StudentScheduling.Models.ViewModelAddUser'タイプですが、この辞書には 'System.Collections.Generic.IEnumerable'1というモデルアイテムが必要です[StudentScheduling.Models.ViewModelAddUser ] '。 – xivo

関連する問題