Почему мой EditorTemplate не связывает список с [HttpPost], но прекрасно отображает его на [HttpGet]? - PullRequest
0 голосов
/ 10 октября 2011

Я загрузил свой код в pastebin, это ссылка:

http://pastebin.com/wBu9PP2x

Когда я отправляю форму, используемые мной списки не привязываются к моей ViewModel.

Но когда я отправляю ViewModel в представление, он прекрасно отрисовывается с помощью EditorFor.Я читал, что при использовании EditorTemplates предполагается, что список будет назван соответствующим образом, чтобы они автоматически связывались с ViewModel при обратной передаче.

Вывод HTML можно увидеть здесь:

http://pastebin.com/5KeyNXWC

Обратите внимание, что ViewModel является производным от ShowQuestionViewModel, который содержит несколько строк.Эти строки отлично связаны.

Это учебное пособие, которому я следовал:

http://jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net-mvc-3

В этом учебнике среда MVC знает, как связывать списки внутри ViewModel.

Вот некоторые выходные данные отладчика:

Контроллер принимает ShowQuestionViewModel в качестве параметра:

http://imageshack.us/photo/my-images/803/debug.jpg

Контроллер принимает FormCollection в качестве параметра:

http://imageshack.us/photo/my-images/542/formcollection.png

Другой контроллер, который принимает List и FormCollection в качестве параметра:

http://imageshack.us/photo/my-images/685/listtest.png

Не сдавайтесь, ребята !!

Спасибо!

Решение

Я сам нашел этот солютин.Я забыл использовать свойства для списка строк и столбцов в ShowMatrixQuestionViewModel.Кроме того, ActionController не будет связываться без TryUpdateModel (), поэтому благодаря @Adam Tuliper и остальным.

1 Ответ

0 голосов
/ 10 октября 2011

Поскольку вы упомянули списки, вы уверены, что ваша модель при обратной передаче содержит все ожидаемые элементы?Также помните, что HTML-помощники будут использовать модельное состояние для привязки данных, если вы отображаете данные после публикации, а не перенаправляете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...