2013-01-12 91 views
-2

我暫一個下拉列表如下:modelstate.isvalid總是假

@Html.DropDownListFor(model => model.Department.Id, new SelectList(db.PhoenixIKDepartments.ToList(), "Id", "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

原因CodeName沒有被該模型填充是因爲這些字段不包括居住在<form>標籤的任何地方。此行代碼:

model => model.Department.Id 

將該下拉列表綁定到該字段。如果您查看生成的HTML,您會注意到nameid屬性就是其中的一個指示。

但是,如果簡單地把兩個隱藏字段這樣的:

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

,他們會得到回發與價值觀。如果你需要他們有一個值,你可以簡單地分配他們在JavaScript中,當他們被張貼回來,他們將被分配到模型。