我有一个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
字符串
答案 0 :(得分:0)
首先,不要创建新的SelectList
。 Razor可以自己解决这个问题,让它变得更好。所有DropDownListFor
要求都是IEnumerable<SelectListItem>
,您已经拥有:
@Html.DropDownListFor(m => m._dayOfWeek, Model._dayOfWeekList)
其次,分配的值是根据ModelState
确定的,Request
由ViewData
,ViewBag
/ 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;
}
}
他们的时间也向别人致敬