我是全球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 ....的文本框以及性别和位置的下拉列表。
我无法弄清楚如何显示每种技能的复选框并将数据保存到数据库。
答案 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)
}