2017-02-20 12 views
-1

Почему модель связующего не работает в выпадающем списке в режиме редактирования?asp.net mvc model binder не работает для выпадающего списка в режиме редактирования

в режиме редактирования я пишу этот код и тест два различных DDL:

@Html.DropDownList("ProductParentCategoryId", null, htmlAttributes: new { @class = "form-control" }) 
@Html.DropDownListFor(model => model.ProductParentCategoryId, (SelectList)ViewBag.ParentId) 

и в мой контроллер

ViewBag.ProductParentCategoryId = new SelectList(_productCategoryService.GetAllProductCategory(), "ProductCategoryId", "ProductCategoryTitle"); 
ViewBag.ParentId = new SelectList(_productCategoryService.GetAllProductCategory(), "ProductCategoryId", "ProductCategoryTitle"); 

, но все текстовое поле в режиме редактирования заправить модели вяжущего, но не происходит на падение вниз.

Почему? enter image description here

------- ------- ОБНОВЛЯТЬ

Я имею в виду, в режиме редактирования, модель связующих связываете все данные из базы данных в текстовом поле и каждый из элементов ... , но в dropdownlist model binder не связывает данные из базы данных как Выбранное значение в выпадающем списке

ответ

0

я найти свое решение Единственное, что должно быть сделано в мой контроллер:

[http Get] 
    public ActionResult Edit(int id) 
    { 
     var selectedId = _productCategoryService.GetOneProductCategory(id); 

     ViewBag.ProductParentCategoryId = new SelectList(_productCategoryService.GetAllProductCategory(), "ProductCategoryId", "ProductCategoryTitle", (int)selectedId.ProductParentCategoryId); 
     ViewBag.GroupFiltersId = new SelectList(_groupFiltersService.GetAllGroupFilter().Where(a => a.GroupFilterParentId == null), "GroupFilterId", "GroupFilterTitle"); 
     return View(_productCategoryService.GetOneProductCategory(id)); 
    } 

вид:

@Html.DropDownList("ProductParentCategoryId", null, htmlAttributes: new { @class = "form-control" }) 
0

Я бы предположил, что вы привязываетесь к модели представления, а не используете ViewBag.

Но чтобы ответить на ваш вопрос, в первом примере вы не передали элементы, чтобы заполнить выпадающий список (второй параметр), вместо этого вы передали нулевое значение.

Также для выпадающих списков я всегда использовал IEnumerable<SelectListItem> в отличие от коллекции SelectList.

Так что в вашей модели представления вы можете создать свойство, как: public IEnumerable<ProductCategory> ProductCategories {get; set;} и привязать его к выпадающего меню следующим образом:

Html.DropDownListFor(m => m.ProductCategoryId, Model.ProductCategories) 

https://msdn.microsoft.com/en-us/library/gg548304(v=vs.111).aspx

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

  • Нет связанных вопросов^_^