我有这样的ajax请求:
$.ajax({
type: 'POST',
url: 'XXXXX',
data: {
someField: $("#someField").val(),
formSerialized: $("#form").serialize()
},
})
我有控制器方法:
public ActionResult XXXXX(string someField, List<myModel> formSerialized)
{
......
}
所以这就是问题所在 - &#34; someField&#34;没有任何问题,但是&#34; formSerialized&#34;包含0项(我希望2)。
但是什么是interestring,如果我要创建这样的ajax请求:
$.ajax({
type: 'POST',
url: 'XXXXX',
data: $("#form").serialize()
})
和控制器的方法:
public ActionResult XXXXX(List<myModel> formSerialized)
{
......
}
一切都很好(我在&#34中有2个项目; formSerialized&#34;)。如何在第一种情况下强制ASP.NET正确绑定数据?
答案 0 :(得分:0)
我不是百分百确定,但serializeArray()应该修复
$.ajax({
type: 'POST',
url: 'XXXXX',
data: {
someField: $("#someField").val(),
formSerialized: $("#form").serializeArray()
},
})
答案 1 :(得分:0)
当您序列化表单时,它会根据表单输入创建一个URL编码的字符串。它使用name属性作为参数名称。
因此,当您对表单进行序列化时,您需要创建以下内容
someField=somestring&formSerialized=formdata&formSerialized=formdata2
哪个会绑定字符串和两个列表值。
这个问题......
$.ajax({
type: 'POST',
url: 'XXXXX',
data: {
someField: $("#someField").val(),
formSerialized: $("#form").serialize()
},
})
...您是否已将url编码参数绑定到参数,以便获得以下内容
someField=somestring&formSerialized=someField=somestring&formSerialized=formdata&formSerialized=formdata2
由于您在网址
中有formSerialized = someField = somestring,因此无效这篇文章很好地解释了mvc模型绑定
http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/
希望这是有道理的。