属性列表的复选框

Checkboxes for attribute list

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

我正在尝试为求职申请制作网络申请。我已经设法保存了申请人姓名、邮件等,但现在我在使用复选框时遇到了麻烦。每个申请人都应该具备技能 属性,其中包含申请人技能列表(如 Java、Java脚本等)。

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

到目前为止我有这个:

我的模特:

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; }        
}

在控制器中出现错误

" Cannot implicitly convert type 'System.Collections.Generic.List jobAppForm.Models.Skills ' to '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.... 的文本框以及性别和职位的下拉列表。

我想不通的是如何显示每个技能的复选框并将数据保存到数据库。

假设您的技能 class 包含一个名称和一个布尔值 属性,并假设您使用 Razor 作为您的视图,您创建一个复选框表单字段列表,所有字段都具有一个共同的 "name" 属性 但每个都包含一个索引,例如 name="myname[0]"。当您 post 表单时,您的控制器获取 "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 })
}

注意:当您处理 posted 值时,未选中框的值将为 "false",选中框将为 "true, false",因此请小心将值解释为 myname[我] != "false".

尝试:

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