如何在Asp.net MVC

时间:2016-06-13 07:56:14

标签: asp.net-mvc multi-select jquery-chosen

我使用实体框架和jquery选择的插件来获取Skills属性的多选下拉列表值。我努力让所选择的插件在我的视图中工作,并想出来,但现在我面临另一个问题,即将这些多选值(例如:Java,c#,javascript等技能)传递给控制器​​并保存到我的员工表。

public IEnumerable<string> Skills { get; set; } 

上面的代码目前是保存多个值,但不确定如何正确使用它。考虑多种方式,但我绝对需要指导。

我的模型看起来像:

public class Employee
{        
    public string Name { get; set; }
    public string Skills { get; set; }
}

和我的控制员:

public ActionResult Create([Bind(Include = "Name,Skills")] Employee employee)
    {

        if (ModelState.IsValid)
        {               
            db.Employees.Add(employee);
            db.SaveChanges();
            return View("Success");
        }

        return View(employee);
    }

查看:

@using (Html.BeginForm())
{
    @Html.LabelFor(model => model.Name)
    @Html.EditorFor(model => model.Name)
    @Html.ValidationMessageFor(model => model.Name)

    @Html.LabelFor(model => model.Skills) 
    @Html.ListBoxFor(model => model.Skills, ViewBag.skillList as MultiSelectList, 
    new { @class = "chzn-select", id="skills", data_placeholder = "Choose  Skills..." })
    @Html.ValidationMessageFor(model => model.Skills)

    <input type="submit" value="Create" class="btn btn-default" />
}

我想的另一种方法是创建一个技能表,Employee表可以具有导航属性。员工可以拥有任意数量的技能,因此技能导航属性是一个集合。但老实说,对这方面知之甚少,也需要这方面的指导。例如:

public class Employee
{        
    public string Name { get; set; }
    public int SkillID { get; set; }

    public virtual ICollection<Skill> Skills { get; set; }
}

如果这些方法中的任何一种都没有意义,如果你能告诉我为什么以及如何正确使用它,我会很感激。谢谢!

1 个答案:

答案 0 :(得分:1)

我选择创建基于多选的过滤器,数据模型使用数组,所以在你的情况下它将是

public string[] Skills { get; set; }