c# - SelectList 没有选择正确的值

标签 c# .net asp.net-mvc

我目前在获取 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/

相关文章:

c# - 将 Access 报告导出为 PDF

c# - 用于全文搜索的索引数据库,Lucene/iFiler/SQL FTS/..etc

asp.net-mvc - Razor 中 ( )(括号)和 { }(大括号)之间的区别

javascript - 在 asp.net mvc 3 中引用自定义外部 javascript 文件

c# - ASPNET MVC : Getting rid of apple-touch-icon errors : The controller for path Controller1/apple-touch-icon-precomposed. png 未找到

c# - 将字符串 0x255 转换为字节时发生 System.OverflowException

c# - 是否有用于 .net 的序列化程序将输出 c# 代码?

c# - 在 mongodb 中执行高效的更新插入

c# - 如何比较两个通用对象与嵌套集合

.net - 查找性能 : Array, 列表还是字典?