0

如果我的列表在 ViewBag 中,如何让我的下拉列表保留所选项目?

这第一个 DropdownList 工作正常:

  @Html.DropDownList("searchString", Model.Enrollments.FirstOrDefault().WeekDays.Select(s => new SelectListItem { Text = s.ToString(), Value = s.ToString(), Selected = s.ToString().Equals(selectedItemFromList) })) 

现在我想要另一个 DropdownList 但不是从模型中获取列表,而是从视图包中获取它,如下所示:

@Html.DropDownList("searchString", new SelectList(ViewBag.someList, "text"), "select an item").. Again this works but I want the format like the first Dropdownlist that retains te selected value…something like this…

@Html.DropDownList("searchString", ViewBag.someList.Select(t=> new SelectListItem{ Text= t.ToString(),Value =t.ToString(),Selected =t.ToString().Equals(selectedItemFromList)}))

这不起作用,因为我是从我怀疑的 viewbag 中获取我的列表的。有没有办法使用 ViewBag 来保留我选择的列表项,就像第一个示例一样?

4

2 回答 2

0

更好的方法是ViewBag在控制器动作中初始化......

控制器

ViewBag.someList = Model.Enrollments.FirstOrDefault().WeekDays
                   .Select(s => new SelectListItem 
                   { 
                        Text = s.ToString(), 
                        Value = s.ToString(), 
                        Selected = s.ToString().Equals(selectedItemFromList)
                   }

看法

@Html.DropDownList("someList", ViewBag.someList as SelectList, "select one")

您可以在控制器端初始化选定的值。

在这里查看示例...

于 2013-03-04T15:59:26.560 回答
0

该解决方案与我的解决方案相同,只是您的解决方案是在控制器而不是视图中实现的。我能够显示我的列表,但我想要的是一种在重新访问视图时保持列表中选定项目的方法。我的列表不是模型属性。我在控制器中创建了它,然后通过 viewbag 将它发送到视图。我展示的第一个示例是将列表作为模型属性访问。访问新列表查看 viewbag。我希望它像我的第一个列表一样配置,可以正常工作。自从我的原始帖子以来,我找到了解决方案。

由于我需要视图中的解决方案,最终做到了:

@Html.DropDownList("theString", listofinstructors.Select(tch => new SelectListItem { Text = tch.ToString(), Value = tch.ToString(), Selected = tch.ToString().Equals(somethingSelected) }))
于 2013-03-11T01:49:12.393 回答