属性列表的复选框
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)
}
我是 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)
}