0

我想在 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>

但它不起作用!

4

2 回答 2

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,然后将 SelectedItemForRole 用于 SelectList。

于 2013-05-26T18:58:47.000 回答
-1
CType(ViewBag.Especialidades, IEnumerable(Of SelectListItem))
于 2021-04-05T18:54:59.183 回答