Как получить значение из html-помощника DropDownListFor в ASP.NET MVC2?

Я знаю, что здесь было несколько подобных вопросов о DropDownListFor, но ни один из них не помог мне...

Я использую Entity Framework в качестве ORM в своем проекте. Есть модель EF под названием Stete. У Стеты Иностранка на модели EF под названием "Друства"

Сейчас пытаюсь сделать форму для редактирования данных, для модели Стета. Мне удалось отобразить все, включая свойство Stete.Drustva.Naziv, но я не могу получить это последнее свойство в своем методе-обработчике [HttpPost]. Он всегда возвращает 0, независимо от того, что я выбираю в раскрывающемся списке.

Вот код:

ДрустваКонтроллер:

 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));
    }

Редактировать вид:

        <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>

Прошу прощения, что не перевел названия объектов на английский, но у них вряд ли есть подходящий перевод. Если надо, могу попробовать создать подобный пример...


person Eedoh    schedule 23.04.2010    source источник


Ответы (1)


Вы включили Html.BeginForm или Ajax.BeginForm в разметку представления? Это распространенная оплошность, которая может вызвать поведение, о котором вы говорите. Я не могу сказать по коду, который вы вставили в свой вопрос. Ура.

person Jay Shanker    schedule 23.04.2010
comment
Да, я сделал ‹% с помощью (Html.BeginForm()) {%› ‹%: Html.ValidationSummary(true) %› Теперь не указана BeginForm, но я также попытался указать действие и имя контроллера (к сожалению, безуспешно) - person Eedoh; 23.04.2010