我有一个dropdownlist,它从viewbag字符串数组
填充 <td>@Html.DropDownListFor(m => Model[i].start_operation, new SelectList(ViewBag.ValidOpers))</td>
<td>@Html.DropDownListFor(m => Model[i].end_operation, new SelectList(ViewBag.ValidOpers))</td>
没有根据Model [i] .start_operation和end_operation
选择所选项目ViewBag.ValidOpers = new[] { "One", "Two", "Three", "Four"};
无法弄清楚为什么不选择。我检查只给出一个Html.DisplayFor(m=>Model[i].start_operation
来检查它是否得到了值,是的,它是获取值并在标签中正确显示,但是在下拉列表中没有选择相同的值。
答案 0 :(得分:1)
过度回答你的问题:
首先尝试将未映射的成员添加到模型类中:
e.g。
[NotMapped]
static public List<SelectListItem> myListOptions { get; set; }
然后在控制器中你可以拥有
MyNameSpace.Models.MyModel.myListOptions = db.myTable.Select(uA=> new SelectListItem{ Value = uA.myColumn, Text = uA.myColumn}).Distinct().OrderBy(uA=>uA.Text).ToList();
// if you want string constants use:
MyNameSpace.Models.MyModel.myListOptions = new List<SelectListItem>();
MyNameSpace.Models.MyModel.myListOptions.Add(new SelectListItem() {Text = "a", Value = "a"});
MyNameSpace.Models.MyModel.myListOptions.Add(new SelectListItem() {Text = "b", Value = "b" });
然后在视图中,您使用:
<div class="editor-field">
@Html.DropDownListFor(model => model.myField, MyNameSpace.Models.MyModel.myListOptions )
@Html.ValidationMessageFor(model => model.myField)
</div>