问题
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?
回答1:
You should do like this:
@Html.DropDownListFor(m => m.ContribType,
new SelectList(Model.ContribTypeOptions,
"ContribId", "Value"))
Where:
m => m.ContribType
is a property where the result value will be.
回答2:
I think this will help : In Controller get the list items and selected value
public ActionResult Edit(int id)
{
ItemsStore item = itemStoreRepository.FindById(id);
ViewBag.CategoryId = new SelectList(categoryRepository.Query().Get(),
"Id", "Name",item.CategoryId);
// ViewBag to pass values to View and SelectList
//(get list of items,valuefield,textfield,selectedValue)
return View(item);
}
and in View
@Html.DropDownList("CategoryId",String.Empty)
回答3:
For binding Dynamic Data in a DropDownList you can do the following:
Create ViewBag in Controller like below
ViewBag.ContribTypeOptions = yourFunctionValue();
now use this value in view like below:
@Html.DropDownListFor(m => m.ContribType,
new SelectList(@ViewBag.ContribTypeOptions, "ContribId",
"Value", Model.ContribTypeOptions.First().ContribId),
"Select, please")
回答4:
@Html.DropDownListFor(m => m.SelectedValue,Your List,"ID","Values")
Here Value is that object of model where you want to save your Selected Value
来源:https://stackoverflow.com/questions/7142961/mvc3-dropdownlistfor-a-simple-example