2

ドロップダウンリストの選択からモデルを作成する方法があるかどうか知りたいです。例えば:

私のビューはモデル Employee にバインドされており、Employee クラスにはプロパティ 'Department' があります。これは独自のプロパティを持つ別のクラスです。

私の従業員ビューモデル

public class Employee
{
public string EmployeeName{get;set;}
public Department EmployeeDepartment{get;set;}
public List<Department> AvailableDepartments {get;set;}
}

部門モデル:

public class Department
{
public string Code{get;set}
public string Name{get;set;}
public string Description{get;set;}
}

従業員の詳細を入力するビューでは、ドロップダウンを使用して、ユーザーが従業員の部門を選択できるようにします。

@Html.DropDownListFor(
m => m.EmployeeDepartment, 
new SelectList(@Model.AvailableDepartments , "Code", "Name")
)

フォームを送信すると、コントローラーで「Employee Class」のインスタンスが取得されますが、明らかに EmployeeDepartment プロパティは null になります。

文字列プロパティ「EmployeeDepartmentCode」を追加してドロップダウンリストにマップすると、機能することを認識しています。しかし、文字列プロパティを使用するのではなく、Department モデル プロパティを設定する方法はありますか? - このビュー モデルは、従業員の部署名を表示するグリッドでも使用されるためです。

4

1 に答える 1

1

EmployeeDepartmentタイプが次のようになっているとします。

public class EmployeeDepartment {
  public int ID { get; set; }
  // + other properties
}

次に、かみそりのコードを次のように変更できます。

@Html.DropDownListFor(
  m => m.EmployeeDepartment.ID, 
  new SelectList(@Model.AvailableDepartments , "Code", "Name")
)

その後、再びモデルを受け取ると、モデルにEmployeeDepartmentは ID が設定された非 null が含まれます。

ただし、モデル バインダーが自動的にデータベースから残りのレコードを取得し、残りのデータを埋めることができるかどうかを尋ねていると思いますか? もしそうなら、それはより複雑な問題ですが、コントローラーで簡単に修正できます。

于 2013-01-17T07:16:56.750 に答える