我有一个性别选择字段(--选择--,男性,女性),我将其填充到我的控制器中。页面加载时,我想要在模型中选择的性别pm.Gender
页面加载时自动选择。
值来自pm.Gender
回来时为:
View:
<%: 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
.
Edit:不适用于任何浏览器。
任何人都知道可能导致此问题的原因是什么?任何帮助,将不胜感激。
Cheers.
编辑:(实施 Kaf 的解决方案后)
好的,这就是我在实施 Kaf 的解决方案后所做的事情。
View:
<%: 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'.
有人知道我做错了什么吗?