У меня есть этот контроллер:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(ExempKillData kill)
{
if (ModelState.IsValid)
{
db.Entry(kill).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index","Owners");
}
return View(kill);
}
и эта (отрезанная по длине) модель:
[Display(Name ="No Data")]
[StringLength(40)]
public string NO_DATA { get; set; }
public DisposalMethods MethodOfDisposal { get; set; }
public int ID { get; set; }
и это (отрезанное по длине) представление:
<td valign="top">
@Html.EditorFor(model => kill.SPECIES, null, "SPECIES", new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => kill.SPECIES, "", new { @class = "text-danger" })
</td>
<td valign="top">
@Html.EnumDropDownListFor(model => kill.MethodOfDisposal, null, new { @class = "form-control" })
</td>
<td valign="top">
@Html.EditorFor(model => kill.EXEM_YEAR, null, "EXEM_YEAR", new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => kill.EXEM_YEAR, "", new { @class = "text-danger" })
</td>
Я попробовал оба этих метода для объявления выпадающего списка:
@Html.EnumDropDownListFor(model => kill.MethodOfDisposal, "MethodOfDisposal", new { @class = "form-control" })
@Html.EnumDropDownListFor(model => kill.MethodOfDisposal, null, new { @class = "form-control" })
Это прекрасно работает, если я закомментирую @ Html.EnumDropDownListFor - модель, возвращаемая в контроллер, полностью детализирована, за исключением значения Enum.
Как только я раскомментирую EnumDropDownList, модель, возвращаемая в контроллер, будет иметь все нулевые значения. ... кроме метода удаления.
... это несмотря на то, что мои данные выглядят хорошо из-за действия POST на представлении:
Что я делаю не так? Я ожидаю, что добавление нового поля в представление, чтобы не сломало остальную часть модели.