2016-07-08 7 views
-1

heloo guys У меня есть заполненный выпадающий список из базы данных в mvc, используя объект Viewbag. Теперь я хочу указать значение по умолчанию для него, например Select Supplier here, это мой код контроллера. .Как указать значение по умолчанию для раскрывающегося списка, которое я заполнил из базы данных, используя Viewbag в 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); 
    } 

и мой 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> 

ответ

0

Если вы используете ViewBag и DropDownList HTML вспомогательный метод, вы должны установить имя выбранного элемента (синус вы использовали имя как свойство значения для Select Lis t) в ViewBag.Supplier, так как это значение, которое вы использовали для первого параметра вспомогательного метода DropDownList.

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

Если вы хотите, чтобы показать значение по умолчанию «Пожалуйста выберите» вариант с параметрами, выпадающие, вы можете использовать эту перегрузку DropDownList метода.

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

Так что ваш код будет

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

Другим решением является не использовать viewbag и использовать строго типизированную модель представления и использовать Html.DropDownListFor вспомогательный метод. Here - пример того, как это сделать.

0

Просто реализуйте опцию переопределенияLabel.

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

Большое спасибо Shyju и JamieD77 Я попробовал Jamie Soloution, это работает Спасибо снова. – Imran