在asp.netmvc中获取下拉ListFor显示选中的值

Get the drop downListFor show the selected value in asp.net mvc

我有一个像下面这样的 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 字符串中的那个选项

首先,不要创建新的 SelectList。 Razor 可以自己处理,最好让它处理。 DropDownListFor 只需要 IEnumerable<SelectListItem>,您已经拥有:

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

其次,分配的值是根据ModelState确定的,它由RequestViewData/ViewBag的值组成,作为最后的手段, Model。因此,您应该确保您的视图模型为 属性 设置了适当的值,并与您的 List<SelectListItem> 中可能的选项值保持一致。然后,确保您在接受 _dayOfWeek 之类的参数与您的操作方法或将 ViewBag._dayOfWeek 之类的参数设置为某个值之间没有任何冲突。在这两种情况下,大小写无关紧要,因此 _dayOfWeek == _DayOfWeek == _DAYOFWEEK.

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

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

        }

也感谢其他人的时间