2013-03-04 53 views
0

如果我的列表在ViewBag中,如何让我的下拉列表保留选定的项目?如果我的列表位于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来保留我的选择列表项目,如第一个例子?

回答

0

该解决方案确实和我一样,除了你的是控制器而不是视图实现。我能够让我的列表显示,但我想要的是一种方法来保持在重新访问视图时所选列表的选定项目。我的列表不是模型属性。我在控制器中创建了它,然后通过viewbag将它发送到视图。我展示的第一个例子是作为模型属性访问列表。新列表访问查看视图包。我希望它能像我的第一个清单那样工作正常。由于我的原始文章,我找到了解决方案。

由于我需要在视图中溶液终于做到:

@Html.DropDownList("theString", listofinstructors.Select(tch => new SelectListItem { Text = tch.ToString(), Value = tch.ToString(), Selected = tch.ToString().Equals(somethingSelected) })) 
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") 

可以初始化在控制器端上选择的值。

检查HERE的例子...

相关问题