Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 如果我的列表在ViewBag中,如何使下拉列表保留所选项目?_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 如果我的列表在ViewBag中,如何使下拉列表保留所选项目?

Asp.net mvc 3 如果我的列表在ViewBag中,如何使下拉列表保留所选项目?,asp.net-mvc-3,Asp.net Mvc 3,如果我的列表在ViewBag中,如何使下拉列表保留所选项目 第一个DropdownList运行良好: @Html.DropDownList("searchString", Model.Enrollments.FirstOrDefault().WeekDays.Select(s => new SelectListItem { Text = s.ToString(), Value = s.ToString(), Selected = s.ToString().Equals(selected

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

第一个DropdownList运行良好:

  @Html.DropDownList("searchString", Model.Enrollments.FirstOrDefault().WeekDays.Select(s => new SelectListItem { Text = s.ToString(), Value = s.ToString(), Selected = s.ToString().Equals(selectedItemFromList) })) 
现在我想要另一个下拉列表,但不是从模型中获取列表,而是从视图包中获取,如下所示:

@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

控制器

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

您可以在控制器端初始化所选值


检查示例…

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

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

@Html.DropDownList("theString", listofinstructors.Select(tch => new SelectListItem { Text = tch.ToString(), Value = tch.ToString(), Selected = tch.ToString().Equals(somethingSelected) }))
@Html.DropDownList("theString", listofinstructors.Select(tch => new SelectListItem { Text = tch.ToString(), Value = tch.ToString(), Selected = tch.ToString().Equals(somethingSelected) }))