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")
)

当我提交表单时,我在控制器处获得了一个“员工类”的实例,但显然 EmployeeDepartment 属性将为空。

我知道,如果我添加一个字符串属性“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 集的非空值。

但是,我认为您是在问是否可以让模型绑定器自动从数据库中获取其余记录并填写其余数据?如果是这样,这是一个更复杂的问题 - 但您可以轻松地在控制器中修补它。

于 2013-01-17T07:16:56.750 回答