一、基本数据绑定
View部分:
@Html.DropDownListFor(model => model.Company_ID, ViewData["Company_ID"] as IEnumerable<SelectListItem>, "--Select One--")
@Html.DropDownListFor(model => model.Company_ID, ViewBag.List as IEnumerable<SelectListItem>, "--Select One--")
Control部分:
List<SelectListItem> cmpyID = new List<SelectListItem>();
foreach (var it in db.Companies)
{
cmpyID.Add(new SelectListItem { Text = it.Name, Value = it.ID.ToString(), Selected = (it.ID == user.Company_ID) });
}
//ViewData["Company_ID"] = cmpyID;
ViewBag.List = cmpyID;
二、从数据库中读取数据后,让DDLF自动选择对应数据.
List<SelectListItem> cmpyID = new List<SelectListItem>();
foreach (var it in db.Companies)
{
cmpyID.Add(new SelectListItem { Text = it.Name, Value = it.ID.ToString(), Selected = (it.ID == user.Company_ID) });
}
//ViewData["Company_ID"] = cmpyID;
ViewBag.List = cmpyID;
创建SelectListItem的时候加上Selected字段就可以了。
三、存在的问题
利用ViewData的方式会出现无法自动绑定选择数据库中对应的数据,同一个View中有两个DDLF,都使用ViewData的方式绑定数据,其中一个可以完成想要的效果,另外一个不能,后来讲不行的改成ViewBag方式就可以了.
原因:
关键的Key = Company_ID 值相同,这个时候在绑定选择的时候就有问题了,需要将ViewData中的关键字顶一个其他的不重复的名称就可以了。如下,
@Html.DropDownListFor(model => model.Company_ID, ViewData["Company_ID"] as IEnumerable<SelectListItem>, "--Select One--")
修改为
<pre name="code" class="html">@Html.DropDownListFor(model => model.Company_ID, ViewData["CompanyIDData"] as IEnumerable<SelectListItem>, "--Select One--")
四、效果图