未使用viewbag选择所选项目的下拉列表

时间:2015-01-23 18:14:22

标签: asp.net-mvc viewbag dropdownlistfor

我有一个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来检查它是否得到了值,是的,它是获取值并在标签中正确显示,但是在下拉列表中没有选择相同的值。

1 个答案:

答案 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>