2017-07-09 4 views
0

ich habe folgende viewbag im Wie bekomme ich den Wert von Html.DropDownList im Controller?

public ActionResult new_vehicle() 
    { 
     ViewBag.customers = new SelectList(db.customers, "cust_id", "cust_name"); 
     return View(db.vehicles.ToList()); 
    } 

und der Code in Sicht ist, dass sie nicht

@Html.DropDownList("customers", "Select Customer"); 

der Code für Add-Funktion ist

public ActionResult veh_AddEdit() 
    { 
     int id = Convert.ToInt32(Request["vehiddenID"]); 
     if (id == 0) 
     { 

      vehicle veh = new vehicle(); 
      Session["veh_id"] = ""; 

      veh.cust_id_fk = Convert.ToInt32(Request.Form["customers"]); 
      veh.veh_make = Request["vemake"]; 
      veh.veh_name = Request["vename"]; 
      veh.veh_model = Request["vemodel"]; 
      db.vehicles.Add(veh); 
      db.SaveChanges(); 
      int latestEmpId = veh.veh_id; 
     } 

     return RedirectToAction("new_vehicle"); 
    } 

Das Problem ist

Controller zugewiesen Abrufen des ausgewählten Werts, dh Fremdschlüssel im Controller.

Antwort

0

In Ihrem Controller Sie in viewbag passieren kann IEnumerable<SelectListItem>

public ActionResult new_vehicle() 
{ 
    ViewBag.customers = db.customers.Select(i=>new SelectListItem() { Text = i.cust_name, Value=i.cust_id }); 
    return View(db.vehicles.ToList()); 
} 

dann Ihrer Ansicht Sie Drop-Down wie die

@Html.DropDownList("customers", (IEnumerable<SelectListItem>)ViewBag.customers, "Select Customer") 

Und dann in Ihrem Controller in Ihrer Methode machen kann veh_AddEdit Sie darauf zugreifen können wie Request["customers"]

+0

Sie ein Lebensretter sind, war die Lösung! – Bilalwcheema

+0

Wenn es für Sie funktioniert, können Sie bitte meine Antwort akzeptieren –

+0

Ich bin neu hier, also wusste ich nicht. – Bilalwcheema

0

ich hoffe, Sie haben die Lösung von Victors Antwort, hier möchte ich prov ide zusätzliche Informationen, durch die Hoffnung, dass es hilft, besser zu verstehen

Im Allgemeinen HTML-Formular, wird die Werte an den Controller senden, mit dem Schlüssel-Wert-Paar. Für den Namen der Dropdown-Liste wird also der Schlüssel und der Wert der Wert sein, den der Benutzer ausgewählt hat.

Um zu überprüfen, dass sobald HTML für die Dropdown-Liste gerendert wird, gehen Sie einfach zur Ansichtsseite Quelle im Browser und erhalten Sie den Namen des Steuerelements, um es in der Aktionsmethode zu verwenden.

Ex:

public ActionResult veh_AddEdit(string customers) 
    { 
     int id = Convert.ToInt32(Request["vehiddenID"]); 
     if (id == 0) 
     { 

      vehicle veh = new vehicle(); 
      Session["veh_id"] = ""; 

      veh.cust_id_fk = Convert.ToInt32(customers); 
      veh.veh_make = Request["vemake"]; 
      veh.veh_name = Request["vename"]; 
      veh.veh_model = Request["vemodel"]; 
      db.vehicles.Add(veh); 
      db.SaveChanges(); 
      int latestEmpId = veh.veh_id; 
     } 

     return RedirectToAction("new_vehicle"); 
    } 
Verwandte Themen