获取drop downListFor在asp.net中显示所选值mvc

时间:2017-05-10 12:52:12

标签: c# asp.net asp.net-mvc html.dropdownlistfor

我有一个DropDownListFor,如下所示

  @Html.DropDownListFor(m => m._dayOfWeek, new SelectList(Model._dayOfWeekList, "Value", "Text"))

in Model 

_dayOfWeek is string
_dayOfWeekList is List<selectlistItem>
现在在dayOfWeekList中的

是在控制器中创建的,它可以有多个值但最多有七个值

值 - 0文字 - 星期一

价值 - 1文字 - 星期二

价值 - 2文字 - 星期三

依旧......

现在在_dayOfWeek字符串中我可以指定值或文本 - 具体取决于值 _dayOfWeek ---下拉列表应该能够显示该选项

加载页面时,下拉列表始终显示为星期一默认值。

如何让下拉菜单显示_dayOfWeek字符串

中的选项

2 个答案:

答案 0 :(得分:0)

首先,不要创建新的SelectList。 Razor可以自己解决这个问题,让它变得更好。所有DropDownListFor要求都是IEnumerable<SelectListItem>,您已经拥有:

@Html.DropDownListFor(m => m._dayOfWeek, Model._dayOfWeekList)

其次,分配的值是根据ModelState确定的,RequestViewDataViewBag / Model的值组成,作为最后的手段,{{ 1}}。因此,您应确保您的视图模型具有为该属性设置的适当值,以使其与List<SelectListItem>中的可能选项值保持一致。然后,确保从接受诸如_dayOfWeek之类的参数到您的操作方法或ViewBag._dayOfWeek设置为某个值之类的内容没有任何冲突。在这两种情况下,套管无关紧要,因此_dayOfWeek == _DayOfWeek == _DAYOFWEEK

答案 1 :(得分:0)

好的,我得到了答案。不使用viewbag或viewdata

       foreach (var item in model._dayOfWeekList)
        {
          if (item.Text == model._dayOfWeek)
         {
               item.Selected = true;
            }

        }

他们的时间也向别人致敬