I'm having trouble with DropDownListFor
in my MVC3 app. I was able to use StackOverflow to figure out how to get them to appear on the View, but now I don't know how to capture the values in its corresponding properties on the View Model when it's submitted. In order to get this to work I had to create an inner class that had an ID and a value property, then I had to use an IEnumerable<Contrib>
to satisfy the DropDownListFor
parameter requirements. Now, however, how is MVC FW supposed to map the value that is selected on this drop-down back into the simple string property on my view model?
public class MyViewModelClass
{
public class Contrib
{
public int ContribId { get; set; }
public string Value { get; set; }
}
public IEnumerable<Contrib> ContribTypeOptions =
new List<Contrib>
{
new Contrib {ContribId = 0, Value = "Payroll Deduction"},
new Contrib {ContribId = 1, Value = "Bill Me"}
};
[DisplayName("Contribution Type")]
public string ContribType { get; set; }
}
In my View I place the dropdown on the page like this:
<div class="editor-label">
@Html.LabelFor(m => m.ContribType)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.ContribTypeOptions.First().ContribId,
new SelectList(Model.ContribTypeOptions, "ContribId", "Value"))
</div>
When I submit the form the ContribType
is (of course) null.
What is the correct way to do this?
I think this will help : In Controller get the list items and selected value
and in View
Here Value is that object of model where you want to save your Selected Value
You should do like this:
Where:
is a property where the result value will be.
For binding Dynamic Data in a DropDownList you can do the following:
Create ViewBag in Controller like below
now use this value in view like below: