为什么我的编辑模板不能在[HttpPost]上绑定一个List,但是在[HttpGet]上渲染它没问题?

时间:2011-10-09 20:15:18

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

我已将代码上传到pastebin,这是链接:

http://pastebin.com/wBu9PP2x

当我提交表单时,我使用的列表不会绑定到我的ViewModel。

但是当我将ViewModel发送到视图时,它使用EditorFor渲染得很好。我已经读过,当使用EditorTemplates时,它应该适当地命名List,以便它们在回发时自动绑定到ViewModel。

HTML输出可以在这里看到:

http://pastebin.com/5KeyNXWC

请注意,ViewModel派生自ShowQuestionViewModel,它包含一些字符串。这些字符串完美绑定。

这是我一直关注的教程:

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

在本教程中,MVC框架知道如何在ViewModel中绑定列表。

以下是一些调试器输出:

Controller将ShowQuestionViewModel作为参数:

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

Controller将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 :(得分:0)

既然您提到了列表,您确定您的模型在回发时包含所有预期的项目吗?另请记住,如果您在发布后显示数据而不是重定向,则HTML帮助程序也将使用modelstate来绑定数据。