IngBond
IngBond

Reputation: 668

Asp.net mvc dropdown list using ViewBag

My table in db have fields : Id,Organisation,Info.

I want make dropdowm list like that:

<select>
  <option value='Id there'>'Organisation there'</option>...

I'm try to do it, using ViewBag:

ViewBag.Organisations = db.Organisations.ToList(); // get all fields from table using dbContext

and in View:

@Html.DropDownList('I don`t know what i shoud write here, please help')

How i can build dropdown list?

Upvotes: 11

Views: 45279

Answers (6)

Avoid using HTML Helpers for less hassle.

Controller:

 List<SelectListItem> list = new List<SelectListItem>();
 foreach (var item in fooList)
 {
       var data = new SelectListItem()
       {
           Text = item.Text,
           Value = item.Id.ToString()
       };
       list.Add(data);
  }
  var selectList = new SelectList(list,"Value","Text");
  //The 2nd parameter specifies the selected value, 
  //The 3rd parameter specifies the text to be displayed.
  ViewBag.selectList = selectList;

Razor:

<select asp-items="ViewBag.selectList" data-placeholder="Seçiniz" data-allow-clear="true" multiple="multiple">  
</select>

Output

Upvotes: 0

Kunal Samal
Kunal Samal

Reputation: 30

controller

ViewBag.category = new SelectList(db.CategoryMasters.ToList(), "CategoryId", "CategoryName");

view

 <div class="form-group">
                @Html.LabelFor(model => model.CategoryId, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                   <div hidden>@Html.EditorFor(model => model.CategoryId, new { htmlAttributes = new { @class = "form-control", id = "categoryid" } })</div>
                        @Html.DropDownList("select", ViewBag.category as SelectList, new { @id = "category" })
                        @Html.ValidationMessageFor(model => model.CategoryId, "", new { @class = "text-danger" })
                </div>
            </div>

JS

<script type="text/javascript">
    $(document).ready(function () {
        $("#category").change(function () {
            var value = $(this).val();
            alert(+value)
            $("#categoryid").val(value);
        });
    });
</script>

Upvotes: 0

Ramavtar Rajput
Ramavtar Rajput

Reputation: 1

@model CURDInMVC.Models.StudentModel


@Html.DropDownListFor(model => model.States,
                  new SelectList(ViewBag.States, "StateID", "StateName"))

Upvotes: -2

SumitS.
SumitS.

Reputation: 65

You can use selectlist from viewbag as follows

@Html.DropDownListFor(m => m.Name, ViewBag.GetData as SelectList, new { @class = "form-control" })

here ViewBag.GetData is populated from the controller, the controller code should be like

ViewBag.GetData = new SelectList(repository.GetOrganisation(), "ID", "OraganizationName");

Upvotes: 2

Valentin Sky
Valentin Sky

Reputation: 132

I recommend you to define a ViewModel for your page with a OrganisationId property. Thus this value will be filled when selecting an entry of the organisations dropdown list.

@model BCO.Models.SelectOrganisationViewModel

@{
    ViewBag.Title = "OrganisationInfo";
}

<div>
    @Html.DropDownListFor(o => o.OrganisationId,
        new SelectList(ViewBag.Organisations, "Id", "Name"))
</div>

The SelectList itself expects

  • the list to fill the DropDownList with
  • the value ("Id")
  • the text ("Name")

as parameters.

Upvotes: 6

Ehsan Sajjad
Ehsan Sajjad

Reputation: 62498

You would need to create a SelectList in controller action using one of the constructors available and in view just pass it DropDownList method as parameter.

In Controller do this:

ViewBag.Organisations = new SelectList(db.Organisations.ToList(),"Id","Organisation");

in SelectList we need to specify which property to use as value and which to use as text in the option tag which we are specifying in last two parameters.

and then in View you would need to use it this way:

@Html.DropDownList("Organization",ViewBag.Organisations as SelectList)

Here first parameter would be used as name of select element and second one will be used to populate the option elements in the select

Following is the list of overloads available for Html.DropDownList :

https://msdn.microsoft.com/en-us/library/system.web.webpages.html.htmlhelper.dropdownlist%28v=vs.111%29.aspx?f=255&MSPPError=-2147217396

Upvotes: 16

Related Questions