Search code examples
c#asp.net.netasp.net-mvcrazor

How to get information from asp dropdownlist?


I have a ViewBag with 'kenmerken' :

while (reader.Read())
  ViewBag.Kenmerken.Add(new SelectListItem { 
  value = reader.GetString(0),
  Text = reader.GetString(0)
});
Reader.Close();

And a form using ASP.NET razor:

@using (Html.BeginForm("KenmerkSelectie2", "KenmerkSelectie", FormMethod.Post, new { id = "kenmerk2" }))
{
  @Html.DropDownList("Kenmerken", (SelectList)ViewBag.Kenmerken, 
  "-- Selecteer        een kenmerk--", 
  new{
      onchange = "document.getElementById('kenmerk2').submit();"
     });
}

And a httppost method

[HttpPost]
public ActionResult KenmerkSelectie2(string value)
{
   var foo = ViewBag.Kenmerk;
   var foo2 = value;
   var foo3 = ViewBag.Kenmerken;
   return View();
}

Every foo is null, How do I get the selected value?


Solution

  • You've given the name of the field Kenmerken, yet your HttpPost method expects a value called value, change either of those to match.

    You should seriously consider creating a model though for this, something like:

    public class MyViewModel
    {
        public string SelectedValue { get; set; }
        public List<SelectListItem> Values { get; set; }
    }
    

    Then in your view you can do:

    @model MyViewModel
    
     @Html.DropDownListFor(m => m.SelectedValue, Model.Values, 
         "-- Selecteer        een kenmerk--", new{
      onchange = "document.getElementById('kenmerk2').submit();"
     })
    

    Also, while you're at it, extract that inline JavaScript out.