Reputation: 657
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
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
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
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