2016-06-13 3 views
1

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!

+0

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') –

+0

@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

+0

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. –

Antwort

1

habe ich gewählt, um einen Filter auf multiselects Basis zu schaffen, und das Datenmodell verwendet Arrays, also in Ihrem Fall wäre es

public string[] Skills { get; set; } 
+0

Vielen Dank, aber jetzt habe ich eine Frage zum Speichern einer Reihe von Zeichenfolgen in meiner Employee-Tabelle.Ich kann sehen, dass Daten weitergegeben werden, aber die Daten werden nicht in die Spalte "Fähigkeiten" übernommen. Ich meine, nachdem ich 'public string [] Skills {get; einstellen; } Der Spaltenname für Skills ist in meiner SQL-Angestelltentabelle verschwunden. – pavilion

+0

Haben Sie keine separaten Klassen für Datenzugriff und Benutzerschnittstelle? – devio

+0

Ich glaube nicht, ich dachte, ModelState.IsValid = True würde Daten in meiner SQL-Tabelle speichern – pavilion

Verwandte Themen