Ich benutze Entity Framework und jquery gewählten Plugin, um multiselected Dropdown-Werte für Skills-Eigenschaft zu erhalten. Ich habe Mühe gehabt, das gewählte Plugin in meiner Sicht zu funktionieren, und habe es herausgefunden, aber jetzt stehe ich vor einem weiteren Problem, diese multiselektierten Werte (zB Skills wie Java, C#, javascript) in den Controller zu übertragen und in meine Employee-Tabelle zu speichern .So speichern Sie multiselected Dropdown-Werte in Datenbanktabelle in Asp.net MVC
public IEnumerable<string> Skills { get; set; }
Der obige Code ist derzeit auf meinem Kopf, um mehrere Werte zu speichern, aber nicht sicher, wie man es richtig verwendet. Ich denke über mehrere Möglichkeiten nach, aber ich brauche definitiv Anleitung.
Ich habe ein Modell, das wie folgt aussieht:
public class Employee
{
public string Name { get; set; }
public string Skills { get; set; }
}
und mein Controller:
public ActionResult Create([Bind(Include = "Name,Skills")] Employee employee)
{
if (ModelState.IsValid)
{
db.Employees.Add(employee);
db.SaveChanges();
return View("Success");
}
return View(employee);
}
Ausblick:
@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" />
}
Ein weiterer Ansatz, den ich denke ich, ist eine Fähigkeit Tabelle zu erstellen Diese Employee-Tabelle kann eine Navigationseigenschaft haben. Ein Mitarbeiter kann beliebig viele Fähigkeiten haben, daher ist die Skill-Navigationseigenschaft eine Sammlung. Aber ehrlich, haben wenig Wissen darüber und brauchen auch Anleitung dafür. Zum Beispiel:
public class Employee
{
public string Name { get; set; }
public int SkillID { get; set; }
public virtual ICollection<Skill> Skills { get; set; }
}
Wenn eine dieser Ansätze keinen Sinn machen, würde ich es begrüßen, wenn Sie mir sagen, warum und wie ich es richtig verwenden kann. Vielen Dank!
A 'sein' Beiträge tun ein Array von Werten zurück die Eigenschaft in Ihrem Modell muss öffentlich sein IEnumerable Skills {erhalten; einstellen; } '(nicht' string Skills') –
@StephenMuecke Vielen Dank für Ihre Antwort, es hat geholfen, aber ich kann sehen, dass Daten weitergegeben werden, und es geht nicht in die Fähigkeitenspalte. Nachdem Sie Ihren Vorschlag verwendet haben, ist der Spaltenname für skills in meiner Tabelle sql employee verschwunden. Wie speichere ich es in der Tabelle? – pavilion
Sie müssen ein Ansichtsmodell in der Ansicht mit 'IEnumerable Skills' (und 'string Name') verwenden und es sollte auch eine Eigenschaft' IEnumerable SkillsList' enthalten, anstatt' ViewBag' zu verwenden (Sie haben es nicht angezeigt Ihr Modell für 'Skill' oder wie Sie die' SelectList' generieren, so dass es 'IEnumerable Skills' sein muss, wenn Sie eine' int SkillId'-Eigenschaft von 'Skill' binden. –