强制实体属性的下拉列表

时间:2011-01-22 22:35:39

标签: c# asp.net asp.net-mvc

我正在尝试跟踪数据库中的员工。我有两个表,员工和部门。 Employees表通过名为DepartmentID的列包含与Departments的外键关系。

这是我的实体:

[Table(Name = "Employees")]
public class Employee
{
    [HiddenInput(DisplayValue = false)]
    [Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
    public int UserID { get; set; }

    [Column]
    [Required(ErrorMessage = "Please enter a first name")]
    [DisplayName("First Name")]
    public string FirstName { get; set; }

    [Column]
    [DisplayName("Last Name")]
    [Required(ErrorMessage = "Please enter a last name")]
    public string LastName { get; set; }        

    [Column]
    [DisplayName("Department")]
    [Required(ErrorMessage = "Please select a department")]
    public int DepartmentID { get; set; }
}

我有一个页面,其中包含添加员工的表单。我正在将实体传递到我的视图页面,并调用<%: Html.EditorForModel() %>

问题是该视图会为DepartmentID创建一个文本框。

如何强制视图显示包含数据库中所有Departments作为下拉列表项的DepartmentID的下拉列表?有没有办法通过向我的实体中的属性添加元数据属性来实现这一点?

1 个答案:

答案 0 :(得分:1)

不,你不能只用一个属性来做。您可以使用Html.DropDownListFor。您还必须将您的视图传递给所有部门的列表。

<%= Html.DropDownListFor(  
    x => x.DepartmentID,  
    Model.Departments }  
) %>