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?
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.