【问题标题】:Checkboxes for attribute list属性列表复选框
【发布时间】:2016-12-16 22:02:48
【问题描述】:

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

我正在尝试为工作申请制作网络应用程序。我设法保存了申请人姓名、邮件等,但现在我遇到了复选框问题。每个申请人都应该拥有包含申请人技能列表(如 Java、JavaScript 等)的 Skills 属性。

在我的表格中,每项技能都应该有一个复选框,但我无法做到。

到目前为止我有这个:

我的模特:

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.... 的文本框和 Gender 和 Position 的下拉列表。

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

【问题讨论】:

  • 首先,您的申请者.GetSkills() 返回一个技能列表,但您正试图将其分配给控制器中的申请者列表。
  • model = new Applicant(); model.SkillList = Applicant.getSkills(); return View(model);

标签: asp.net-mvc checkbox checkboxlist


【解决方案1】:

假设您的技能类包含一个名称和一个布尔属性,并假设您使用 Razor 作为您的视图,您将创建一个复选框表单字段列表,所有这些字段都具有一个通用的“名称”属性,但每个字段都包含一个索引,例如名称=“我的名字[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”。

【讨论】:

    【解决方案2】:

    试试:

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

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 2017-04-30
      相关资源
      最近更新 更多