being fab
being fab

Reputation: 657

How do I get the selected value of a DropDownList in MVC

How can I get the selected value from the DropDown in MVC? I want to assign it to a variable.

This is my controller action:

public ActionResult Drop()
{
    List<SelectListItem> items = new List<SelectListItem>();
    items.Add(new SelectListItem { Text = "Action", Value = "0" });
    items.Add(new SelectListItem { Text = "Drama", Value = "1" });
    items.Add(new SelectListItem { Text = "Comedy", Value = "2" });
    items.Add(new SelectListItem { Text = "Science Fiction", Value = "3" });
    items.Add(new SelectListItem { Text = "Horror", Value = "4" });
    items.Add(new SelectListItem { Text = "Art", Value = "5"  });
    ViewData["Options"] = items;
}

This is my view:

@Html.DropDownList("Options", ViewData["Options"] as SelectList, "--Select Item--")

Upvotes: 7

Views: 23606

Answers (3)

Aykut
Aykut

Reputation: 1

View :

@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
    <fieldset>
        Select filter
        @Html.DropDownList("SelectFilter", @Model.ddlList)
        <p>
            <input type="submit" value="Submit" />
        </p>
    </fieldset>
}

Controller :

        public ActionResult Index(string SelectFilter)
        {
            var _model = new Models.MyModel();

            List<SelectListItem> listDDL = new List<SelectListItem>();
            listDDL.Add(new SelectListItem { Text = "11", Value = "11" });
            listDDL.Add(new SelectListItem { Text = "22", Value = "22" });
            listDDL.Add(new SelectListItem { Text = "33", Value = "33" });
            ViewData["ddlList"] = listDDL;

//We add our DDL items to our model, you can add it to viewbag also
//or you can declare DDL in view with its items too
            _model.ddlList = listDDL;
            return View();
        }

Model :

Public class MyModel
{
     public List<SelectListItem> ddlList = new List<SelectListItem>();

}

Upvotes: 0

Muhammad Soliman
Muhammad Soliman

Reputation: 23756

Also, consider that if you are not using FormCollection in your post, you could easily use the following, this is very helpful especially if you are using partial views inside the main one.

[HttpPost]
public ActionResult Drop(SelectListItem item)
{

    var selectedValue = Request.Form["ID_OF_THE_DROPDOWNLIST"];
    //TODO......
    return RedirectToAction("Drop");
}

Upvotes: 3

Charlie
Charlie

Reputation: 1332

View

@using (Html.BeginForm())
{ 
    <h2>Drop</h2>
    @Html.DropDownList("Options", ViewData["Options"] as SelectList, "--Select Item--")

    <input type="submit" name="submit" value="Submit" />
}

Controller Add a new action

[HttpPost]
public ActionResult Drop(FormCollection form)
{
    var optionsValue = form["Options"];
    //TODO:
    return RedirectToAction("Drop");
}

Upvotes: 4

Related Questions