项目使用mvc4,给dropDownList指定默认值未选中
页面代码是:
1、未有默认选中值 Html.DropDownListFor(m => m.Type, ViewData["Type"] as IEnumerable<SelectListItem>, new { @class = "form-control", disabled = "true" }) 2、有默认选中值 @Html.DropDownList("Type") 请问第一种默认选中值如何实现?
Controller中代码是:
public ActionResult Add() { ViewData["Type"] = PromotionTypeList().AsEnumerable(); return View(); }
public static SelectList PromotionTypeList() { List<SelectListItem> items = new List<SelectListItem>() { new SelectListItem(){Text="--请选择--", Value="",Selected = false}, new SelectListItem(){Text="全场满赠", Value="0",Selected = false}, new SelectListItem(){Text="分类满赠", Value="1",Selected = false}, new SelectListItem(){Text="买赠", Value="2",Selected = false}, new SelectListItem(){Text="首单", Value="3",Selected = false}, new SelectListItem(){Text="特价", Value="4",Selected = false}, new SelectListItem(){Text="打折", Value="5",Selected = true}, }; SelectList generateList = new SelectList(items, "Value", "Text",5); return generateList; }
运行结果如图:
我也遇到这个问题了,困扰了我几个小时,现在解决了,用SelectList绑定,不要用IEnumable<SelectListItem>,,不知道微软为什么不修复这个问题
@{
var selectList = new SelectList(approverList, "Id", "FullName", Model.Approvers[i].Id);
}
@Html.DropDownListFor(m => m.Approvers[i].Id, selectList, "", new { @class = "form-control approver" })
你这个地方不是设置了Selected=true了吗,难道下拉框中不是默认选中这个选项?
这种写法的确没选中
Html.DropDownListFor(m => m.Type, ViewData["Type"] as IEnumerable<SelectListItem>, new { @class = "form-control", disabled = "true" })
这种写法是选中了的
@Html.DropDownList("Type")
我需要第一种写法
@无涯哒: 问一下,对于这种没有默认值的,你最后还是通过脚本控制让他选中的吗?
我一般都是用脚本让他选中一下,这样不容易出错。
嗯,这也是一种办法
对于第一种用法,你只需要设置Type的值就可以选中了。也就是前台的m.Type的值。
我也这样用过,没效果,选不中。所以请教各位大神了
@无涯哒: 这不科学,,,,这个Type需要匹配的是Value的值、
补充一下,我也碰到这种问题。
数据源是IEnumerable<SelectListItem>,但是不能在循环里使用。具体情况没来得及查明
这样是不可以的,在循环外面声明一个list,每次循环时使用
如要在循环中可用,这样既可。每次声明一个SelectList,感谢 felixnet 启发