如何将ViewBag值转换为SelectList

时间:2013-05-26 18:46:39

标签: asp.net-mvc-3

我想在DropDown中将VieBage项目作为选择列表,这是我的ViewModel内容

 public List<SelectListItem> SelectedItemForRole { get; set; }

 public string SelectedValue { get; set; }




public static RegisterViewModel GetRole()
        {
            var model = new RegisterViewModel { SelectedItemForRole = new List<SelectListItem>() };
            model.SelectedItemForRole.Add(new SelectListItem() { Text = "Administrator", Value = "1" });
            model.SelectedItemForRole.Add(new SelectListItem() { Text = "Operator", Value = "2" });

            return model;
        }

这是我的行动内容:

  ViewBag.RoleList = RegisterViewModel.GetRole();

我在View中所做的就是这样:

 <div>
            @Html.LabelFor(register => register.Role)
            @Html.DropDownListFor(register => register.SelectedValue, new SelectList(ViewBag.RoleList, "Value", "Text"))
        </div>

但它不起作用!

2 个答案:

答案 0 :(得分:1)

您需要做的就是将ViewBag值转换为SelectList。所以在你的情况下:

@Html.DropDownListFor(register => register.SelectedValue, (SelectList)ViewBag.RoleList)

然而,当我查看你的代码时,我看到你的ViewBag实例是RegisterViewModel类型,它有一个名为SelectedItemForRole的属性,它包含你的选择列表。那么我认为你需要的是:

@Html.DropDownListFor(register => register.SelectedValue, ((RegisterViewModel)ViewBag.RoleList).SelectedItemForRole)

基本上,您将ViewBag转换为RegisterViewModel,然后将SelectItemForRole用于SelectList。

答案 1 :(得分:-1)

CType(ViewBag.Especialidades, IEnumerable(Of SelectListItem))