2015-03-14 3 views
2

Я создаю drop down используя бритву, заполняя список модели, а затем передавая этот список в представление, чтобы заполнить раскрывающийся список. Выпадающий файл создается правильно, но когда я отправляю значение в действие create контроллера, я не получаю ниспадающее значение.MVC dropdrown не получает значение в контроллере

модели, в IdCarBrand я возвращать значение раскрывающегося, который заполняется список DropDownList:

public class CarModelModel 
{ 
    public int IdCarBrand { get; set; } 
    //Drop down 
    public IEnumerable<SelectListItem> DropDownList { get; set; } 
} 

Затем я заселить список с помощью этого метода, обслуживание только доступ к базе данных:

 public IEnumerable<SelectListItem> GetItemsDropDown() 
     { 
     SelectListItem listItem = null; 
     CarBrandService service = new CarBrandService(); 
     var itemsList = service.GetAll().Select(x => 
      new SelectListItem{ 
       Value = x.Id.ToString(), 
       Text = x.Name 
      }); 

     return new SelectList(itemsList, "Value", "Text"); 
     } 

, а также в контроллере у меня есть действия создания по умолчанию

public ActionResult Create() 
    { 

    } 

Здесь в переменной модели является где

public ActionResult Create([Bind(Include = "Id,Name,Description,URL,Email,Img")] CarModelModel brand) 
    { 
     if (ModelState.IsValid) 
     { 

      return RedirectToAction("Index"); 
     } 

     return View(brand); 
    } 

Теперь в окне я получил этот код, чтобы создать dropdrown:

@Html.DropDownListFor(model => model.IdCarBrand, Model.DropDownList, new { htmlAttributes = new { @class = "form-control" } }) 

HTML, оказанные:

<select name="IdCarBrand" id="IdCarBrand" htmlattributes="{ class = form-control }" data-val-required="The IdCarBrand field is required." data-val-number="The field IdCarBrand must be a number." data-val="true" class="valid"> 
<option value="1">Alfa Romeo</option> 
<option value="2">Audi</option> 
<option value="3">BMW</option> 
<option value="4">Chery</option> 
<option value="5">Chrevrolet</option>....... 

В заключение, выпадающее шоу отлично. У меня есть две проблемы:

1- В Create Action IdCarBrand возвращает null.

2- Визуально выпадающий он не берет контроль формы класса:

+1

У вас есть '[Bind]' атрибут, исключающую свойство 'IdCarBrand' (его нет в списке свойств' Include') –

+0

Можете ли вы объяснить более подробно, я не понял. –

+1

Вам также не нужно дважды создавать «SelectList». - это может быть просто 1 строка кода 'return new SelectList (service.GetAll()," Id "," Name ");' –

ответ

3

В вашем действии .. вы не включили его.

public ActionResult Create([Bind(Include = "Id,Name,Description,URL,Email,Img,IdCarBrand")] CarModelModel brand) 
    { 
     if (ModelState.IsValid) 
     { 

      return RedirectToAction("Index"); 
     } 

    return View(brand); 
} 

Создав список включений, вы его исключили.

Для раскрывающегося .. измените, как показано ниже.

@Html.DropDownListFor(model => model.IdCarBrand, Model.DropDownList,new { @class = "form-control" })