I am struggling to get the selected value from the hard-coded dropdownlist in mvc , below is the code:
View:
<tr><td>No of Helmets</td><td><div class="editor-field">
<%: Html.DropDownList("helmets", (SelectList)ViewData["size"], "--select--")%>
</div></td></tr>
<tr><td>No of Garages</td><td><div class="editor-field">
<%: Html.DropDownList("garages", (SelectList)ViewData["garages"], "--select--")%>
Controller:
// dropdown for helmets
[HttpPost]
public ActionResult Create(Event trackday, FormCollection formValues)
{Product product = new Product();//
ViewBag.mode = "create";
// for dropdown track
ITrackRepository trackResp = new TrackRepository();
IQueryable<Object> tracks = trackResp.GetVenuesSelectlist();
ViewData["Venue"] = new SelectList(tracks, "VenueID", "Name");
var helmets = Enumerable.Range(1, 200).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() });
ViewData["helmets"] = new SelectList(helmets.ToList(), "Value", "Text");
// dropdown for garages
var garages = Enumerable.Range(1, 50).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() });
ViewData["garages"] = new SelectList(garages.ToList(), "Value", "Text"); product.QtyAvailable = Convert.ToInt32(formValues["garages"]);
if (ModelState.IsValid)
{
trackday.DateAdded = DateTime.Now;
trackday.DateModified = DateTime.Now;
// productResp.Save();//
// trackday.Products.Add(product);
trackdayResp.Add(trackday);
trackday.Products.Add(product);
trackdayResp.Save();
return RedirectToAction("Index");
}
else
{
return View();
}
}`
How can I get the Selected value of the above 2 dropdownlist in mvc post controller.
You’ve called your dropdowns “helmets” and “garages” if you debug your action and look at the
formValuesdictionary your should see these two values.Alternatively you could change your model to have a “Helmets” and “Garages” property of type int? and the model binder should populate these values.
Or you could change your action to something like:
This should be populated with the id’s (selected value) of the drop down list.
Update
Here’s my code that gets the values either from the collection or from the passed properties:
HTML:
Controller: