我正在按如下方式填充下拉列表:
@Html.DropDownListFor(model => model.Department.Id, new SelectList(db.PhoenixIKDepartments.ToList(), "Id", "Name"))
我希望有Id, Code和Name,但只有Id和ModelState为false。
public class Phoenix_IK_Persons
{
[Key]
public int Id { get; set; }
[StringLength(50)]
public string Name { get; set; }
[StringLength(500)]
public string Surname { get; set; }
[StringLength(50)]
public string Registry { get; set; }
public Phoenix_IK_Departments Department { get; set; }
}
public class Phoenix_IK_Departments
{
[Key]
public int Id { get; set; }
[StringLength(50)]
[Required(AllowEmptyStrings=false, ErrorMessage="Lütfen Kod Giriniz!")]
public string Code { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "Lütfen Ad Giriniz!")]
[StringLength(500)]
public string Name { get; set; }
}
你能帮我在下拉列表中正确填写Id, Name和Code吗?
提前感谢!
Code
和Name
没有在模型上填充的原因是因为这些字段不包括和填充在<form>
标记中的任何地方。这行代码:
model => model.Department.Id
将下拉列表绑定到该字段。如果您查看生成的HTML,您将注意到name
和id
属性指示了这一点。
但是,如果您像这样简单地放入两个隐藏字段:
@Html.HiddenFieldFor(model => model.Department.Code);
@Html.HiddenFieldFor(model => model.Department.Name);
它们将返回值。如果你需要它们有一个值,你可以简单地在JavaScript中分配它们,当它们被发送回来时,它们将被分配给模型。