2016-07-08 1 views
-1

heloo les gars j'ai rempli la liste déroulante de la base de données en mvc en utilisant l'objet Viewbag maintenant je veux spécifier la valeur par défaut pour Select Supplier here est mon code Controler. .Comment spécifier la valeur par défaut pour la liste déroulante J'ai peuplé de la base de données en utilisant Viewbag dans 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); 
    } 

et mon 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> 

Répondre

0

Si vous utilisez ViewBag et DropDownList méthode d'aide HTML, vous devez définir le nom de l'élément sélectionné (sinus vous avez utilisé Nom comme la propriété de valeur Sélectionnez Lis t) dans ViewBag.Supplier car c'est la valeur que vous avez utilisée pour le premier paramètre de la méthode auxiliaire DropDownList ici.

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"); 

Si vous souhaitez afficher une valeur par défaut « S'il vous plaît sélectionner » option avec les options de liste déroulante, vous pouvez utiliser cette surcharge de la méthode DropDownList.

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

Donc, votre code sera

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

Une autre solution est de ne pas utiliser ViewBag et utiliser un modèle de vue fortement typé et utiliser Html.DropDownListFor méthode d'assistance. Here est un exemple de la façon de le faire. Il suffit d'implémenter le remplacement d'optionLabel par

0

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

merci beaucoup Shyju et JamieD77 j'ai essayé le Jamie Soloution ça fonctionne encore merci. – Imran