ASP.NET MVC中为DropDownListFor设置选中项的方法
在MVC中,當(dāng)涉及到強(qiáng)類(lèi)型編輯頁(yè),如果有select元素,需要根據(jù)當(dāng)前Model的某個(gè)屬性值,讓Select的某項(xiàng)選中。本篇只整理思路,不涉及完整代碼。
□ 思路
往前臺(tái)視圖傳的類(lèi)型是List<SelectListItem>,把SelectListItem選中項(xiàng)的Selected屬性設(shè)置為true,再把該類(lèi)型對(duì)象實(shí)例放到ViewBag,ViewData或Model中傳遞給前臺(tái)視圖。
? 通過(guò)遍歷List<SelectListItem>類(lèi)型對(duì)象實(shí)例
□ 控制器
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public ActionResult SomeAction(int id) { ??//從數(shù)據(jù)庫(kù)獲取Domain Model ??var domainModel = ModelService.LoadEntities(m => m.ID == id).FirstOrDefault<Model>(); ?? ??//通過(guò)某個(gè)方法獲取List<SelectListItem>類(lèi)型對(duì)象實(shí)例 ??List<SelectListItem> items = SomeMethod(); ?? ??//遍歷集合,如果當(dāng)前Domain model的某個(gè)屬性與SelectListItem的Value屬性相等,把SelectListItem的Selected屬性設(shè)置為true ??foreach(SelectListItem item in items) ??{ ????if(item.Value == Convert.ToString(domainModel.某屬性)) ????{ ??????item.Selected = true; ????} ??} ?? ??//把List<SelectListItem>集合對(duì)象實(shí)例放到ViewData中 ??ViewData["somekey"] = items; ?? ??//可能涉及到把Domain Model轉(zhuǎn)換成View Model ?? ??return PartialView(domainModel); } |
□ 前臺(tái)視圖顯示
@model DomainModel?
@Html.DropDownListFor(m => m.SomeProperty,(List<SelectListItem>)ViewData["somekey"],"==請(qǐng)選擇==")
通過(guò)遍歷Model集合
給View Model設(shè)置一個(gè)bool類(lèi)型的字段,描述是否被選中。?
把Model的某些屬性作為SelectListItem的Text和Value值。根據(jù)View Model中的布爾屬性判斷是否要把SelectListItem的Selected設(shè)置為true.
□ View Model
?| 1 2 3 4 5 6 | public class Department { ??public int Id {get;set;} ??public string Name {get;set;} ??public bool IsSelected {get;set;} } |
□ 控制器
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public ActionResult Index() { ?SampleDbContext db = new SampleDbContext(); ?List<SelectListItem> selectListItems = new List<SelectListItem>(); ?? ?//遍歷Department的集合 ?foreach(Department department in db.Departments) ?{ ??SelectListItem = new SelectListItem ??{ ???Text = department.Name, ???Value = department.Id.ToString(), ???Selected = department.IsSelected.HasValue ? department.IsSelected.Value : false ??} ??selectListItems.Add(selectListItem); ?} ?ViewBag.Departments = selectListItems; ?return View(); } |
下面是其它網(wǎng)友的補(bǔ)充:
后臺(tái)代碼:
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public ActionResult Index(FormCollection collection) ?????{ ???????IList<Project> li = Utility.SqlHelper.getProjectList(); ???????SelectList selec = new SelectList(li, "ID", "Name"); ???? ???????if (collection["drop"] != null) ???????{ ?????????string projectID = collection["drop"]; ?????????selec = new SelectList(li, "ID", "Name", projectID);//根據(jù)返回的選中項(xiàng)值設(shè)置選中項(xiàng)? ????????ViewData["ruturned"] = collection["drop"]; ???????} ???????ViewData["drop"] = selec; ??????return View(); ????} |
前端代碼:
? @using (Html.BeginForm()){
@Html.DropDownList("drop", ViewData["d"] as SelectList)
??? <input? type="submit" value="查看對(duì)應(yīng)分組列表" />
??????? }
??????? <p> 當(dāng)前項(xiàng)目ID: @ViewData["ruturned"]</p>
轉(zhuǎn)載于:https://www.cnblogs.com/sjqq/p/7355107.html
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的ASP.NET MVC中为DropDownListFor设置选中项的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python内置函数之--open
- 下一篇: [LeetCode] 9. Palind