我有一个性别选择字段(--Select--,Male,Female),我正在我的控制器中填充它。当页面加载时,我希望在pm.Gender
页面加载时自动选择模型中选择的性别。
返回的值pm.Gender
如下:
- " "
- “米”
- “F”
看法:
<%: Model.Gender %>
<%: Html.DropDownListFor(m => m.Gender, (IEnumerable<SelectListItem>)ViewData["gender"], new { @class = "span2" })%>
控制器:
gender = new[] { "Select", "Male", "Female" };
List<SelectListItem> genderselectList = new List<SelectListItem>();
foreach (string item in gender)
{
SelectListItem sli = new SelectListItem { Text = item, Value = item };
if (item.Trim().StartsWith(pm.Gender))
sli.Selected = true;
genderselectList.Add(sli);
}
ViewData["gender"] = genderselectList;
调试应用程序后,我可以看到它genderselectList
包含正确的数据以及Selected = true
应该选择的正确值。但是当页面加载时,下拉列表中没有选择应该使用Html.DropDownListFor
.
编辑:不适用于任何浏览器。
任何人都知道可能导致此问题的原因是什么?任何帮助,将不胜感激。
干杯。
编辑:(在实施 Kaf 的解决方案后)
好的,这就是我在实施 Kaf 的解决方案后所做的。
看法:
<%: Html.DropDownListFor(m => m.Gender, (SelectList)(ViewData["gender"]), new { @class = "span2" }) %>
控制器:
gender = new[] { "Select", "Male", "Female" };
List<SelectList> genderselectList = new List<SelectList>();
foreach (string item in gender)
{
SelectList sli;
if (item.Trim().StartsWith(pm.Gender))
sli = new SelectList(GetGender(), item, item, item);
else
sli = new SelectList(GetGender(), item, item);
//without selectedValue
genderselectList.Add(sli);
}
ViewData["gender"] = genderselectList;
当我这样做时,我得到以下异常:
Unable to cast object of type 'System.Collections.Generic.List`1[System.Web.Mvc.SelectList]' to type 'System.Web.Mvc.SelectList'.
有人知道我在做什么错吗?