modelstate.isvalid总是为false

时间:2013-01-12 18:04:18

标签: c# asp.net-mvc entity-framework-4.1 dropdownlistfor

我填写的下拉列表如下:

@Html.DropDownListFor(model => model.Department.Id, new SelectList(db.PhoenixIKDepartments.ToList(), "Id", "Name"))

我希望有Id,Code和Name,但只有Id和ModelState是假的。

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,名称和代码?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

模型上未填充CodeName的原因是因为这些字段未包含在 <form>标记在任何地方。这行代码:

model => model.Department.Id

绑定到该字段。如果您查看生成的HTML,您会注意到nameid属性表明了这一点。

但是,如果您只是放入两个隐藏的字段:

@Html.HiddenFieldFor(model => model.Department.Code);
@Html.HiddenFieldFor(model => model.Department.Name);

他们会回复价值。如果你需要它们有一个值,你只需在JavaScript中分配它们,当它们被回发时,它们将被分配给模型。