MVC中DropDownListFor賦初始選擇值問題

一、基本數據綁定


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--")



四、效果圖




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章