2016-12-15 47 views
-1

我是ASP.NET和全球网络编程的新手。属性列表的复选框

我正在尝试为作业应用程序制作web应用程序。我已经设法保存申请人姓名,邮件等,但现在我有复选框的麻烦。每个申请人都应该拥有技能属性,其中包含申请者技能列表(如Java,JavaScript等)。

在我的表单中应该有每个技能的复选框,但我无法实现。

我有这个至今:

我的模型:

public class Applicant 
{ 
    [Key] 
    public int ID { get; set; } 

    public string FName { get; set; } 

    public string LName { get; set; } 

    public string Email { get; set; } 

    [DataType(DataType.MultilineText)] 
    public string Letter { get; set; } 

    [EnumDataType(typeof(Sex))] 
    public Sex Gender { get; set; } 

    [EnumDataType(typeof(Pos))] 
    public Pos Position { get; set; }  

    public enum Sex 
    { 
     [Display(Name = "Male")]  Male = 1, 
     [Display(Name = "Female")]  Female = 2 
    } 

    public enum Pos 
    { 
     [Display(Name = "Front-end")]    Frontend = 1, 
     [Display(Name = "Back-end")]    Backend = 2, 
     [Display(Name = "Tester")]     Tester = 3, 
     [Display(Name = "System administrator")] SysAdmin = 4, 
     [Display(Name = "Project manager")]   ProjMan = 5, 
     [Display(Name = "Database specialist")]  Database = 6, 
    } 

    [Display(Name = "Candidate skills: ")] 
    public List<Skills> SkillList { get; set; } 

    public static List<Skills> getSkills() 
    { 
     List<Skills> skills = new List<Skills>() 
     { 
      new Skills() { ID = 1, skillName = "Java", isChecked = false }, 
      new Skills() { ID = 2, skillName = "JavaScript", isChecked = false }, 
      new Skills() { ID = 3, skillName = "PHP", isChecked = false }, 
     }; 
     return skills; 
    } 
} 

public class Skills 
{ 
    [Key] 
    public int ID { get; set; } 

    public string skillName { get; set; } 
    public bool isChecked { get; set; }   
} 

在控制器我得到错误

“无法隐式转换类型 “System.Collections.Generic.List jobAppForm .Models.Skills'至 'System.Collections.Generic.List jobAppForm.Models.Applicant'“

我的控制器:

// GET 
    public ActionResult Create() 
    { 
     List<Applicant> model = new List<Applicant>(); 
     model = Applicant.getSkills(); 

     return View(model); 
    } 

所以我必须创建视图其中包含FName参数,LName的文本框....和下​​拉列表性别和位置。

我弄不清楚的是如何显示每种技能的复选框并将数据保存到数据库。

+0

第()返回技能的名单,但你正在试图将其分配到申请人在控制器列表。 –

+0

'model = new Applicant(); model.SkillList = Applicant.getSkills();返回查看(模型);' –

回答

0

假设你的Skill类包含一个名称和一个布尔属性,并且假设你正在为你的视图使用Razor,你创建了一个复选框表单域列表,所有这些域都有一个公共的“name”属性,但每个属性都包含一个索引,如名称= “MYNAME [0]”。当你发布表单时,你的控制器会得到你迭代的“myname”的数组值。

@for (int i = 0; i < Model.SkillList.Count(); i++) 
{ 
    string checkedValue = "false"; 
    @if (Model.SkillList[i]) 
    { 
     checkedValue = "checked"; 
    } 
    @Html.CheckBox("myname[" + i.ToString() + "]", new { @checked = checkedValue }) 
} 

!注意:当你处理张贴值的未选中框的值将是“假的”,并选中框将是“真,假”所以要小心解释值作为MYNAME [I] =“假”。

0

尝试:所有Applicant.GetSkills的

@for(int i = 0;i < Model.SkillList.Count;i++) 
{ 
    @Html.CheckBoxFor(model => model.SkillList[i].IsSelected) 
    @Html.DisplayFor(model => model.SkillList[i].skillName) 
}