Я знаю, что здесь было несколько похожих вопросов о DropDownListFor, но ни один из них не помог мне ...
Я использую Entity Framework в качестве ORM в моем проекте. Есть модель EF под названием "Stete". У Stete есть иностранная на EF модель под названием "Drustva"
Сейчас я пытаюсь сделать форму для редактирования данных, для модели Stete. Мне удалось отобразить все, включая свойство Stete.Drustva.Naziv, но я не могу получить это последнее свойство в своем методе обработчика [HttpPost]. Он всегда возвращает 0, независимо от того, что я выбираю в выпадающем списке.
Вот код:
DrustvaController:
public static IEnumerable<SelectListItem> DrustvaToSelectListItemsById(this KnjigaStetnikaEntities pEntities, int Id)
{
IEnumerable<Drustva> drustva = (from d in pEntities.Drustva
select d).ToList();
return drustva.OrderBy(drustvo => drustvo.Naziv).Select(drustvo => new SelectListItem
{
Text = drustvo.Naziv,
Value = drustvo.Id.ToString(),
Selected = (drustvo.Id == Id)? true : false
});
}
SteteController:
private IEnumerable<SelectListItem> privremenaListaDrustava(int Id)
{
using (var ctx = new KnjigaStetnikaEntities())
{
return ctx.DrustvaToSelectListItemsById(Id);
}
}
public ActionResult IzmijeniPodatkeStete(Int32 pBrojStete)
{
PretragaStetaModel psm = new PretragaStetaModel();
ViewData["drustva"] = privremenaListaDrustava(psm.VratiStetuPoBrojuStete(pBrojStete).Drustva.Id);
ViewData.Model = new Models.Stete();
return View("EditView", (Stete.Models.Stete)psm.GetSteta(pBrojStete));
}
EditView:
<div class="editor-label">
<%: Html.Label("Društvo") %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(m => m.Drustva.Naziv, ViewData["drustva"] as IEnumerable<SelectListItem>) %>
<%: Html.ValidationMessageFor(model => model.FKDrustvo) %>
</div>
Прошу прощения, что не перевёл названия объектов на английский, но они вряд ли имеют соответствующий перевод. При необходимости я могу попробовать создать аналогичный пример ...