我目前在使SelectList
默认为定义的初始值时遇到一些问题。我创建了一个代码片段来演示此问题:https://dotnetfiddle.net/ozroT1
基本上我希望我的DropDownList显示[null,1,2,3,4,5]
,它将映射到Model.ChosenNumber
。
我对此外观的模型由此简化版本表示:
public class SampleViewModel
{
public int? ChosenNumber;
public IEnumerable<SelectListItem> PickList;
}
我像这样创建一个List<SelectListItem>
:
List<SelectListItem> pickNumberList = new List<SelectListItem>();
pickNumberList.AddRange(Enumerable.Range(1, 5).Select( l => new SelectListItem { Text = l.ToString(), Value = l.ToString() }));
pickNumberList.Insert(0, new SelectListItem { Text = "", Value = "-1" });
然后填充模型:
SampleViewModel model = new SampleViewModel();
model.ChosenNumber = 3;
model.PickList = new SelectList(pickNumberList, "Value", "Text");
return View(model);
然后最后在剃刀中:
@Html.DropDownListFor(model => model.ChosenNumber, Model.PickList)
为什么下拉列表默认为ChosenNumber \\(3)
?
答案 0 :(得分:6)
未选择该选项,因为ChosenNumber
是字段,而不是属性。将其更改为
public int? ChosenNumber { get; set; }
此外,您无需从第一个创建第二个相同的IEnumerable<SelectListItem>
。它可以只是
model.PickList = pickNumberList;