Я знаю, что этот вопрос уже задавался здесь, в SO, но я не могу отличить свою ошибку от этого сообщения: DropDownListFor Not Selecting Value
Я не использовал имя ViewBag так же, как свойство модели, полученное по ссылке.
Вот мой код в контроллере:
public ActionResult Create()
{
ViewBag.Companies = db.Companies.ToList();
return View();
}
и это мой код в представлении:
<div class="editor-field">
@Html.DropDownListFor(model => model.ParentId, new SelectList(ViewBag.Companies, "Id", "ShortName"), "Select a Category")
@Html.ValidationMessageFor(model => model.ParentId)
</div>
в моей форме создания раскрывающийся список создается без ошибок, однако после нажатия кнопки создания появляется сообщение об ошибке «значение не может быть нулевым», даже если я выбрал значение.
Я даже снова добавил ViewBag в действие [POST] Create:
[HttpPost]
public ActionResult Create(Company company)
{
ViewBag.Companies = db.Companies.ToList();
if (ModelState.IsValid)
{
db.Companies.AddObject(company);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(company);
}
Я не знаю, где находится ошибка, я совершенно не знаком с ASP.NET MVC.
Вот журнал ошибок:
ViewBag.Companies
перед возвратом представления) - person   schedule 23.02.2015ViewBag
так, что все в порядке (хотя вы должны переместить его в строку непосредственно передreturn View(company);
- нет смысла делать это, если вы перенаправляете его ненужные дополнительные накладные расходы). Можете ли вы опубликовать полную информацию об ошибке. - person   schedule 23.02.2015SelectList()
(IEnumerable items
) являетсяnull
, что означает, чтоViewBag.Companies
имеет значение null, когда вы возвращаете представление. Вы уверены, что ваш код в точности такой, как вы разместили? - person   schedule 23.02.2015ParentId
не соответствует одному из значений параметра (определяется свойствомId
Company
, тогда будет выбран первый вариант (Выбрать категорию). Трассировка стека ясно показывает, что значениеViewBag.Companies
равноnull
- person   schedule 23.02.2015@Html.DropDownListFor(model => model.ParentId, new SelectList(ViewBag.Companies, "Id", "ShortName"), "Select a Category")
на@Html.DropDownListFor(model => model.ParentId, new SelectList(ViewBag.Companies, "Id", "ShortName"))
не будет иметь никакого значения, если у вас нет других проблем с кодом. Все, что делает третий параметр - это привязка<option value>Please a category</option>
к тегу<select>
. - person   schedule 23.02.2015