复选框的属性列表

时间:2016-12-15 19:21:41

标签: asp.net-mvc checkbox checkboxlist

我是全球ASP.NET和网络编程的新手。

我正在尝试为求职申请制作网络应用程序。我已设法保存申请人姓名,邮件等,但现在我遇到了复选框的麻烦。每个申请人都应该拥有技能属性,其中包含申请人技能列表(如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 ....的文本框以及性别和位置的下拉列表。

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

2 个答案:

答案 0 :(得分: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 })
}

注意:处理发布的值时,未选中的框值将为“false”,复选框将为“true,false”,因此请小心将值解释为myname [i]!=“false”。< / p>

答案 1 :(得分:0)

尝试:

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