一、基本數據綁定
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--")
四、效果圖