2016-12-15 48 views
-1

我是ASP.NET和全球網絡編程的新手。屬性列表的複選框

我正在嘗試爲作業應用程序製作web應用程序。我已經設法保存申請人姓名,郵件等,但現在我有複選框的麻煩。每個申請人都應該擁有技能屬性,其中包含申請者技能列表(如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

'model = new Applicant(); model.SkillList = Applicant.getSkills();返回查看(模型);' –

回答

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

!注意:當你處理張貼值的未選中框的值將是「假的」,並選中框將是「真,假」所以要小心解釋值作爲MYNAME [I] =「假」。

0

嘗試:所有Applicant.GetSkills的

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