如何将多选下拉列表值保存到 Asp.net MVC 中的数据库 table

How to save multiselected dropdownlist values into database table in Asp.net MVC

我正在使用 entity framework 和 jquery 选择的插件来获取技能 属性 的多选下拉列表值。我一直在努力让所选的插件在我看来工作,并弄清楚了,但现在我面临另一个传递那些多选值的问题(例如:Java、c#、javascript 等技能)进入控制器并保存到我的员工 table。

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" />
}

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

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

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

如果这些方法中的任何一个没有意义,请告诉我为什么以及如何正确使用它,我将不胜感激。谢谢!

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

public string[] Skills { get; set; }