SelectList未选择正确的值

问题描述 投票:6回答:1

我目前遇到一些问题,让我的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)

c# .net asp.net-mvc
1个回答
6
投票

未选择该选项,因为ChosenNumber是字段,而不是属性。将其更改为

public int? ChosenNumber { get; set; }

此外,您不需要从第一个创建第二个相同的IEnumerable<SelectListItem>。它可以是

model.PickList = pickNumberList;
© www.soinside.com 2019 - 2024. All rights reserved.