我使用实体框架和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; }
}
如果这些方法中的任何一种都没有意义,如果你能告诉我为什么以及如何正确使用它,我会很感激。谢谢!
答案 0 :(得分:1)
我选择创建基于多选的过滤器,数据模型使用数组,所以在你的情况下它将是
public string[] Skills { get; set; }