3

我想用值 A、Band C 填充下拉列表。下面的代码仅适用于创建,不适用于编辑。

 ViewBag.UserType = new[] { new SelectListItem { Text = "A", Value = "1", Selected = false }, new SelectListItem { Text = "B", Value = "2", Selected = false }, new SelectListItem { Text = "C", Value = "3", Selected = false } };

所以我创建了一个匿名类。我有一个像下面这样的匿名课程。

var Roles= new[]
            {    new { Id =1,UserType="A" },
                 new {Id=2,UserType="B" },
                 new {Id=3,UserType="B" }            
            };
          ViewBag.Type = Roles.ToList();

但我不知道如何在视图中填写下拉列表。

@Html.DropDownListFor(model => model.UserType, ((IEnumerable<SelectListItem>)ViewBag.UserType).Select(option => new SelectListItem
                                     {
                                         Text = (option == null ? "None" : option.Text),
                                         Value = option.Value.ToString(),
                                         Selected = (Model != null) && (option.Value == (Model.UserType).ToString())
                                     }),"Select")

我应该在视图中进行哪些更改

4

1 回答 1

0

将以下属性添加到您的 ViewModel 类 -

    public SelectList Roles
    {
        get
        {
            List<SelectListItem> items = new List<SelectListItem>();
            items.Add(new SelectListItem
            {
                Value = "1",
                Text = "A",
            });
            items.Add(new SelectListItem
            {
                Value = "2",
                Text = "B",
            });
            items.Add(new SelectListItem
            {
                Value = "3",
                Text = "C",
            });

            return new SelectList(items, "Value", "Text");
        }
    }

    public int SelectedRole { get; set; }

并在视图中绑定如下 -

    @Html.DropDownListFor(model => model.SelectedRole, Model.Roles)
于 2013-07-04T15:37:25.630 回答