Я создаю 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- Визуально выпадающий он не берет контроль формы класса:
У вас есть '[Bind]' атрибут, исключающую свойство 'IdCarBrand' (его нет в списке свойств' Include') –
Можете ли вы объяснить более подробно, я не понял. –
Вам также не нужно дважды создавать «SelectList». - это может быть просто 1 строка кода 'return new SelectList (service.GetAll()," Id "," Name ");' –