提交表单时我有一个下拉列表,它被提交为null ...
HTML:
@Html.DropDownListFor(c => Model.HowOftenCar, Model.HowOftenCar, new { id = "CompDrop" })
型号:
public IEnumerable<SelectListItem> HowOftenCar { get; set; }
控制器:
IList<string> HowOftenCar = new List<string>();
HowOftenCar.Insert(0, "More than once a week");
HowOftenCar.Insert(1, "Once a month");
HowOftenCar.Insert(2, "Once a year");
model.HowOftenCar = HowOftenCar.Select(c => new SelectListItem()
{
Text = c,
Value = c
});
发表:
[HttpPost]
public ActionResult Index(Competition model)
{
if (ModelState.IsValid)
{}
}
我也试过......
@Html.DropDownListFor(c => Model.HowOftenCar, new SelectList(Model.HowOftenCar, "Value","Text"), new { id = "CompDrop" })
答案 0 :(得分:0)
您没有正确使用DropDownListFor
。
第一个参数是要填充的模型上的属性。如果要填充模型上的HowOftenCar
属性,它应该是值的类型 - 在这种情况下,它看起来像一个字符串。
public string HowOftenCar { get; set; }
第二个参数是选项列表。你有这个权利,但它需要的不是你试图设置的属性。
IList<string> HowOftenCarChoices = new List<string>
{
"More than once a week",
"Once a month",
"Once a year"
};
model.HowOftenCarChoices = HowOftenCar.Select(c => new SelectListItem()
{
Text = c,
Value = c
});
那么你最终会得到
@Html.DropDownListFor(m => m.HowOftenCar, Model.HowOftenCarChoices)
请注意,您不需要id属性,因为DropDownListFor
会根据lambda自动为其指定HowOftenCar
。