模型状态.是有效的总是假的

本文关键字:有效 状态 模型 | 更新日期: 2023-09-27 17:52:46

我正在按如下方式填充下拉列表:

@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吗?

提前感谢!

模型状态.是有效的总是假的

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

model => model.Department.Id

将下拉列表绑定到该字段。如果您查看生成的HTML,您将注意到nameid属性指示了这一点。

但是,如果您像这样简单地放入两个隐藏字段:

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

它们将返回值。如果你需要它们有一个值,你可以简单地在JavaScript中分配它们,当它们被发送回来时,它们将被分配给模型。