2016-07-08 20 views
-1

heloo Jungs Ich habe Dropdown-Liste aus der Datenbank in mvc mit Viewbag Objekt bevölkert jetzt möchte ich Standard-Wert für wie Select Lieferant hier ist meine Controler-Code. .wie man den Standardwert für Dropdown-Liste ich habe von der Datenbank mit Viewbag in mvc

public ActionResult Create() 
    { 
     //IEnumerable<SelectListItem> SuppliersList = db.Suppliers.Select(c => new SelectListItem 
     //{ 
     // Value = c.Name, 
     // Text = c.Name 

     //});    

     ViewBag.SupplierList = new SelectList(db.Suppliers, "Name", "Name"); 
     return PartialView("_Create"); 
    } 

    // POST: /Frames/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 async Task<ActionResult> Create([Bind(Include="FrameId,Name,FrameCode,FrameFor,Brand,Material,Color,FrameType,FrameShape,Bridge,LensWidth,FrameWidth,TempleLength,LensHeight,FrameWeight,Quantity,PurchaseRate,SaleRate,Supplier,Discription,Status,CreatedOn")] Frame frame) 
    { 

     if (ModelState.IsValid) 
     { 
      db.Frames.Add(frame); 
      await db.SaveChangesAsync(); 
      return Json(new { success = true }); 
     } 



     return PartialView("_Create", frame); 
    } 

und meine Viewcode

<div class="col-md-3"> 
        @Html.LabelFor(model => model.Supplier) 
        @Html.DropDownList("Supplier", ViewBag.SupplierList as SelectList, new { @class = "form-control"}) 
        @Html.ValidationMessageFor(model => model.Supplier) 
       </div> 

Antwort

0

Wenn Sie ViewBag und DropDownList html-Helfer-Methode verwenden, sollten Sie das ausgewählte Element Name (Sinus setzen Sie Namen als Wert Eigenschaft für Select verwendet Lis t) in ViewBag.Supplier als das ist der Wert, den Sie für den ersten Parameter von DropDownList Helfer Methode hier verwendet haben.

var suppliers = db.Suppliers.ToList(); 
ViewBag.SupplierList = new SelectList(suppliers , "Name", "Name"); 
// Here i am setting the 2 item in suppliers as the selected item. 
// You can change it as needed 
ViewBag.Supplier = suppliers[1].Name; 
return PartialView("_Create"); 

Wenn Sie eine Standard zeigen wollen „Bitte wählen Sie“ Option zusammen mit den Drop-Down-Optionen, können Sie diese Überlastung der DropDownList Methode verwenden können.

public static MvcHtmlString DropDownList(
    this HtmlHelper htmlHelper, 
    string name, 
    IEnumerable<SelectListItem> selectList, 
    string optionLabel, 
    object htmlAttributes 
) 

So wird Ihr Code

@Html.DropDownList("Supplier", ViewBag.SupplierList as SelectList, 
             "Please select", new { @class = "form-control" }) 

sein Eine andere Lösung ist nicht viewbag zu verwenden und eine stark typisierte Ansicht Modell zu verwenden und Html.DropDownListFor Helfer-Methode verwenden. Here ist ein Beispiel dafür, wie es geht.

0

Implementieren Sie einfach die OptionLabel override.

@Html.DropDownList("Supplier", 
        ViewBag.SupplierList as SelectList, 
        "Select Supplier", 
        new { @class = "form-control" }) 
+0

Vielen Dank Shyju und JamieD77 Ich habe versucht, die Jamie Soloution es funktioniert Danke nochmal. – Imran