2015-09-15 2 views
1

У меня есть dropdownlist, заполненный из базы данных. Когда я перехожу на страницу редактирования, чтобы изменить любое поле, раскрывающийся список устанавливает его на первое значение, заполненное в списке. Мой вопрос в том, как сохранить выбранное значение при попытке изменить некоторые другие поля?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' для просмотра или' ДЕПАРТАМЕНТ'? –

ответ

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

Смежные вопросы