Значения обратной передачи теряются! - PullRequest
1 голос
/ 12 мая 2011

У меня есть контроллер с типичными create методами (один для GET, один для POST). POST принимает строго типизированный параметр:

[HttpPost] public ActionResult Create(Quiz entity)

однако, когда обратный вызов сделан, свойства моего объекта равны нулю ... если я переопределю его так:

[HttpPost] public ActionResult Create(Quiz entity, FormCollection form)

Я вижу, что значения есть, например, form["Component"] содержит "1". У меня не было этой проблемы в прошлом, и я не могу понять, почему этот класс будет другим.

мысли кого-нибудь?

Ответы [ 2 ]

3 голосов
/ 12 мая 2011

Самый простой способ получить привязку модели по умолчанию для создания экземпляра Quiz для вас при обратной передаче - использовать помощники формы HTML в вашем представлении. Так, например, если ваш класс Quiz выглядел так:

public class Quiz
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Следующий код, по вашему мнению, обеспечит наличие значений при обратной передаче:

@Html.HiddenFor(mod => mod.Id)
@Html.TextBoxFor(mod => mod.Name)

Имейте в виду, что значения, которые необходимо отправить обратно, но не показаны в представлении (например, идентификаторы), необходимо добавить в представление с помощью Html.HiddenFor.

Вот более полный список вспомогательных функций HTML-форм.

1 голос
/ 19 мая 2011

Я выяснил это !!

так что в моей модели (см. Комментарии к ветке @ ataddeini ниже) вы можете видеть, что у меня есть Компонент ... для представления компонентов, которые я использовал пару списков,Второй (Компоненты) зависит от содержания первого (Продукты).При создании второго списка я использовал

@Html.DropDownListFor(x => x.Component, ...)

, который (как показано в одной из приведенных выше ссылок) генерирует поле формы под названием «Компонент» ... и в этом заключается проблема.Что мне нужно было сделать, это связать его с идентификатором компонента!

@Html.DropDowListFor(x => x.Component.Id, ...)

ура!

...