我目前在获取 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);
然后终于在 Razor 中:
@Html.DropDownListFor(model => model.ChosenNumber, Model.PickList)
为什么下拉列表不默认为 ChosenNumber \\(3)
?
最佳答案
未选择该选项,因为 ChosenNumber
是一个字段,而不是一个属性。改成
public int? ChosenNumber { get; set; }
此外,您不需要创建第二个相同的 IEnumerable<SelectListItem>
从第一个。可以只是
model.PickList = pickNumberList;
关于c# - SelectList 没有选择正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48086896/