2015-09-15 55 views
1

我有一個從數據庫填充的下拉列表。當我轉到編輯頁面來更改任何字段時,下拉列表將它自己設置爲列表中填充的第一個值。我的問題是,當我嘗試編輯其他字段時,如何保持選定的值?MVC Dropdownlist如何在編輯時保留保存的值

這是視圖:

@Html.DropDownListFor(m => m.DEPTID, (IEnumerable<SelectListItem>)ViewBag.DEPTID, htmlAttributes: new { @class = "form-control" }) 

這是控制器:

public ActionResult Edit(string id, string id2, int id3) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 

     JOB jOB = db.JOBs.Find(id, id2, id3); 
     if (jOB == null) 
     { 
      return HttpNotFound(); 
     } 
     ViewBag.DEPTID = new SelectList(db.DEPARTMENTs.ToList(), "DEPTID", "DEPTID"); 
     return View(jOB); 
    } 

這是模型:

public class JOB 
    { 
      public string DEPTID { get; set; } 
+0

'm.DEPTID'是什麼類型? –

+0

我編輯了我的帖子並添加了我的模型。正如你可以看到DEPTID是字符串。 – mevren

+0

無法理解你傳遞'JOB'模型來查看還是'DEPARTMENT'? –

回答

1

你不能給ViewBag屬性同名的模型屬性你的約束力。

在GET方法名稱更改爲(比方說)

ViewBag.DepartmentList = new SelectList(db.DEPARTMENTs, "DEPTID", "DEPTID"); 

並在視圖

@Html.DropDownListFor(m => m.DEPTID, (SelectList)ViewBag.DepartmentList, new { @class = "form-control" }) 

如果DEPTID匹配選項值中的一個值,則該選項將在視圖呈現時選擇。

+0

這就是它!它的工作!它比我想象的更簡單!非常感謝! – mevren