0

Fpr,使用 jquery 将其序列化并发布到服务器。在 action 方法中,我尝试获取List<T>or的 or IEnumerable<T>objectList<T>orIEnumerable<T>为空。如何将其发布到方法中,以便我将其作为 List 或IEnumerable.

var div = $("#TableForm").serialize();
$.post("../Controller/Action?Mode=" + Mode, div , function () { });

我序列化表单,序列化就可以了。问题只出在行动上——我得到了空值,请帮忙

4

1 回答 1

2

首先,你不能序列化一个table对象:

HTML:

​&lt;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,因此它为空。

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

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

那么serialized将等于"one=blah&two=moreblah"

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

如果您没有正确执行此操作,那么 MVC 将不知道如何对绑定进行建模,并且您的参数将作为 null 传入。

于 2012-12-15T19:56:47.083 回答