2016-11-30 3 views
0

Nur um vorzuschlagen, ich bin ein komplettes noob und brauche alle Hilfe, die ich bekommen kann.Wie kann ich Daten aus einer Dropdown-Liste mit Einträgen aus einer anderen Tabelle speichern oder die Daten manuell eingeben?

Ich mache derzeit eine Web-Anwendung-Datenbank, die Einträge speichert. Es würde Mitarbeiter- und Rolleninformationen speichern. Ich benutze ein EntityFramework mit asp.net MVC-Setup. Hier sind meine Tabellen in der Datenbank

Staff 
+--=-----+----------+ 
| id | int  | 
| name | string | 
| role | string | 
+--------+----------+ 

Role 
+--=-----+----------+ 
| id | int  | 
| name | string | 
+--------+----------+ 

Wenn Einträge für Mitarbeiter zu schaffen, die für ihre Rolle Spalte, werden die Nutzer entweder eine Wahl durch die Rollen Tabelle bevölkert eine Dropdownlist von Werten des Lesens oder manuelle Eingabe der Wert für Rollen .

Wenn Benutzer Werte aus der Dropdown-Liste verwenden, wird der Name des Werts (Rollenname) als Zeichenfolge in der Rolle Staff statt der ID gespeichert.

Wenn Benutzer den Wert für die Rollenspalte manuell eingeben, wird dieser Wert automatisch zur Tabelle Role hinzugefügt, nachdem der Mitarbeitereintrag erstellt wurde.

Optisch ist das, was ich versuche zu tun:

https://i.stack.imgur.com/GfATW.png

https://i.stack.imgur.com/xAiR0.png

Dies ist, was ich für meinen Code haben in der Create.html Datei für das Personal

<div class="form-group"> 
     @Html.LabelFor(model => model.role, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownList("RoleList", null, htmlAttributes: new { @class = "form-control" }) 
      @Html.EditorFor(model => model.role, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.role, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

Es fehlt Dinge wie die Checkbox, aber ich bin fest, wie man es richtig eingeben, um die Funktionalität, die ich suche, zu tun.

Und hier ist mein Controller-Code für die Erstellung an die Mitarbeiter:

// GET: Staff/Create 
    public ActionResult Create() 
    { 
     ViewBag.RoleList = new SelectList(db.Roles, "roleid", "roleName");// 
     return View(); 
    } 

    // POST: Staff/Create 
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598. 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "staffid,staffName,org,role")] Staff staff) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Staves.Add(staff); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     ViewBag.RoleList = new SelectList(db.Roles, "roleid", "roleName");// 
     return View(staff); 
    } 

Vielen Dank für jede Hilfe! Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Antwort

0

Sie haben bereits einen Code für einen Anwendungsfall erstellt, indem Sie eine Rolle aus Dropdown oder aus einem Textfeld mit Checkbox hinzufügen.

Wenn das Kontrollkästchen aktiviert ist, deaktivieren Sie das Dropdown-Menü mit jquery.

Nach dem Absenden des Formulars müssen Sie checbox checked Wert auch übergeben.

Wenn der Wert aktiviert ist, müssen Sie zuerst eine Rolle einfügen, dann müssen Sie einen Mitarbeiter einfügen, ansonsten müssen Sie nur die Mitarbeiterdetails eingeben.

Danke.

Verwandte Themen