c# – SelectListItem selected = true不工作在视图中
我有一个性别选择字段( – 选择 –,男,女),我填充在我的控制器.当页面加载时,我希望在加载页面时自动选择模型pm.Gender中选择的性别.
pm.Gender的值返回: >“” 视图: <%: 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解决方案后) 视图: <%: Html.DropDownListFor(m => m.Gender,(SelectList)(ViewData["gender"]),new { @class = "span2" }) %> 控制器: gender = new[] { "Select","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); else sli = new SelectList(GetGender(),item); //without selectedValue genderselectList.Add(sli); } ViewData["gender"] = genderselectList; 当我这样做,我得到以下例外: 任何人知道我在做错什么? 解决方法
我建议对SelectList使用强类型属性(而不是使用ViewBag / ViewData)更好.我相信你期望的是,您的下拉列表将在模型中进行性别选择时预选.这是一个解决方案(代码不是100%干净,但这将工作)
模型 public class TestModel { public string Gender { get; set; } public IEnumerable<SelectListItem> GenderList { get { List<SelectListItem> list = new List<SelectListItem> { new SelectListItem() { Text = "Select",Value = "Select" },new SelectListItem() { Text = "Male",Value = "Male" },new SelectListItem() { Text = "Female",Value = "Female" } }; return list.Select(l => new SelectListItem { Selected = (l.Value == Gender),Text = l.Text,Value = l.Value }); } } } 控制器动作 public ActionResult MyView() { TestModel m = new TestModel(); m.Gender = "Female"; return View(m); } MyView.cshtml @model TestModel @{ ViewBag.Title = "MyView"; } <h2>MyView</h2> @using (Html.BeginForm()) { <div> @Html.DropDownListFor(model => model.Gender,Model.GenderList) </div> } OUTPUT 选择“女性”选项的下拉菜单 编辑 根据评论,找到以下示例项目的链接 1)https://github.com/prashanth-t/DropdownDemo_BareBones(使用MVC 4空模板,文件大小最小) 2)https://github.com/prashanth-t/DropdownDemo(使用MVC 4互联网应用模板,较大的文件大小) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |