MVC DropDownList füllen aus einer DB-Tabelle und schicken Sie zu einer anderen DB-Tabelle
Ich würde gerne eine dropdownlist, die zieht die Daten aus einer Qualifikation Tabelle und dann auf HttpPost es speichert den gewählten Wert in der dropdownlist an eine "Qualifizierung" - Spalte in der employee-Tabelle. Ich bin sehr neu in MVC und ich weiß wirklich nicht, die syntax sehr gut. Ich weiß auch nicht, wie jquery, vb usw. also sorry, wenn es einen post gibt, deckt diese und ich habe es nicht gesehen, weil ich nicht weiß, was ich bin auf der Suche.
Dies ist derzeit mein bestes Versuch, dies zu tun:
Controller:
private Database1Entities db = new Database1Entities();
...
...
...
//GET: /Home/CreateEmp
public ActionResult CreateEmp()
{
ViewBag.QualList = new SelectList(db.Qualifications, "Id", "qual");
return View();
}
//POST: /Home/CreateEmployee
[HttpPost, ActionName("CreateEmployee")]
public ActionResult CreateEmpResult(Employee emp)
{
if (ModelState.IsValid)
{
db.Employees.Add(emp);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.QualList = new SelectList(db.Qualifications, "Id", "qual", emp.qualification);
return View(emp);
}
Erstellen-Mitarbeiter Anzeigen:
@model MvcDropDownList.Models.Employee
@using (Html.BeginForm("CreateEmployee", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table>
<!-- other fields removed for sake of simplicity -->
<tr>
<td>
@Html.Label("Select Your Qualification:")
</td>
<td>
@Html.DropDownList("QualList", "--Select--")
</td>
</tr>
</table>
}
Tisch Struktur:
Qualifikationen Tabelle: Id, qual
Employee-Tabelle: Id, Vorname, Nachname, Geschlecht, Qualifikation
Meinen code erfolgreich bekommt die Daten von der "Qualifikation" - Tabelle, aber nicht senden Sie es an die "Qualifikation" - Spalte in der Tabelle "Mitarbeiter".
Anregungen wird sehr geschätzt, Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie binden Ihre dropdownlist, das Modell, die Sie zurückgeben, wenn Sie auf die Schaltfläche Speichern.
In anderen Worten, diese:
Sollten so etwas wie dieses:
Bearbeiten Wie Stephen Muecke hingewiesen, die Sie benötigen, um die Besetzung der Viewbag Wert auf eine
SelectList
.Hinweis Es gibt mehrere Möglichkeiten für die
DropDownListFor()
. Ich nur nahm das einfachste um der Klarheit Willen, aber Sie könnte hinzufügen, die optionale label etc.Dieser bindet es an Ihrem Modell (
emp
):Hinweis: Wenn Ihr
Employee
Klasse war richtig eingestellt und hat die benötigte Ausländische keys (link zur Qualifikation Tabelle), es sollte schon eine.Qualification_Id
(oder ähnlichen Namen) in IhreEmployee
Klasse (vorausgesetzt, dass Klasse ist Ihre aktuelle Datenbank-Entität).Diese änderungen werden Sie alles, was Sie brauchen:
emp.Qualification_Id
.emp
an die db.emp.Qualification_Id
) sicherstellen, dass die richtigen Werte geschrieben werden in der neuen Mitarbeiter-Zeile, die in der Datenbank erstellt werden.Als Allgemeine Regel gilt, versuchen immer zu binden, steuert (dropdownlists, Textfelder, ...), um eine Eigenschaft des Modells. wenn Sie das tun, werden Sie nicht brauchen, um speziellen code schreiben zu tun im Grunde das gleiche.
@Html.DropDownListFor(m => m.Qualification_Id, (SelectList)ViewBag.QualList)
- Sie müssen gegossenViewBag.QualList
@Html.DropDownListFor(m => m.QualId, (SelectList)ViewBag.QualList)
Im controller, die post Aktion:ViewBag.QualList = new SelectList(db.Qualifications, "Id", "qual", emp.qualId);
ich dachte, das würde funktionieren, Bin ich etwas fehlt??ViewBag = ...
Teil. Einstellung der ViewBag getan werden sollte, auf die Methode, wenn der be, die Seite Erstellen (GET-request), nicht, wenn Sie erhalten POST von ihm (dann, sollte der Benutzer bereits ausgewählt, den richtigen Eintrag aus der dropdownlist). Zweitens, hat Sie setzen Sie einQualId
Spalte/Feld in der Entität Mitarbeiter, oder haben Sie Hinzugefügt, dass eine Beziehung zwischen den Entitäten? Je nachdem, ob Sie Arbeit, Code-Erste, Modell-Erste "oder" DB " Erste, Sie haben zu lassen, EF erzeugen seine eigenen FK-Feld beruht auf der Beziehung, die Sie zwischen den beiden Entitäten.CONSTRAINT [qualid] FOREIGN KEY ([qualId]) REFERENCES [dbo].[Qualifications] ([Id])
in der employee-Tabelle die Verknüpfung der Qualifikationen "Id" - Taste, um die "qualId" - Taste in der Employee-Tabelle. Wie funktioniert die EF in meinem Fall? ... Ich nehme das "ViewBag" in der post-Aktion (war ich nach einem anderen forum, bevor Sie diese, um funktionieren zu können)Ich weiß nicht, ob dies helfen wird, aber ich habe eine model Klasse erstellt, die mehrere Listen, die ich nutzen werde während meiner Anwendung eine der Listen sieht wie folgt aus:-
HTML:
meine Klassen name ist ThingLists, von dort aus dann instanziiere ich es in meiner controller-Klasse wie:-
HTML:
und zeigt in meinen Augen wie:-
HTML:
und das funktioniert perfekt bei der Anzeige meiner dropdownlist, schlug jemand vor, ich benutze ein javascript zuordnen ausgewählte Artikel wie:-
JS:
und zu bekomme ich noch null in mein controller vielleicht kannst du irgendwo von dort. 🙂 ich warte immer noch auf eine Antwort auf meine Frage, aber wenn jemand antwortet mit etwas, was ich mit Ihnen teilen.
@oli_taz verwenden Sie mein code oben und viewdata statt viewbag ich gerade zu ändern meine Ansicht zu
HTML:
bekommt er Werte aus der Datenbank-Tabelle "Abteilungen" und füllt Liste erstellt, in thinglists.cs und wenn ich es speichern speichert genau meine ausgewählten Wert auf meine "Aufgaben" - Tabelle. Ich hoffe, ich erklärte es klar genug im Art neu.