MVC 3动作获取参数为null

时间:2012-12-15 19:32:32

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

我序列化Fpr,并使用jquery将其发布到服务器。 在操作方法中,我尝试获取List<T>的{​​{1}}或IEnumerable<T>,但objectList<T>为空。 如何将其发布到方法中,以便我将其作为列表或IEnumerable<T>

IEnumerable

我序列化表单,序列化就行了。问题只出在行动中 - 我得到了空,请帮助

1 个答案:

答案 0 :(得分:2)

首先,您无法序列化table对象:

HTML:

​<table id="myTable">
    <tr>
        <td><input id='one' name='one' value='blah' /></td>
        <td><input id='two' name='two' value='moreblah' /></td>
    </tr>
</table>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

JavaScript的:

var serialized = ​$("#myTable").serialize();
debugger;​​​​​

当代码在调试器中暂停时,您可以看到serialized"",空字符串。 MVC不知道如何将它绑定到你的IEnumerable,因此它是null。

另一方面,如果你这样做:

var serialized = ​$("#one, #two").serialize();
debugger;​​​​​

然后serialized将等于"one=blah&two=moreblah"

其次,如果您实际绑定到form,则表中的所有输入元素都将被正确序列化。 但是,输入元素的名称非常重要,因为您尝试模型绑定到IEnumerable<CafePlaced>。阅读Phil Haack撰写的关于模型绑定到列表的文章:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

如果你没有正确地做,那么MVC将不知道如何建模绑定,你的参数将通过null来实现。