我有一个表单,我可以成功发送到我的控制器操作:
this.submitForm = function (e) {
var formData = $("#FinalizeForm").serialize();
$.ajax({
type: "POST",
url: '/MyController/MyMethod',
data: formData
});
我的控制器:
[HttpPost]
public void MyMethod(SomeModel model)
工作正常。但是,我想发送附加数据以及表单,例如:
var test = {
name: 'Mike',
age: '40',
nationality: 'Portuguese'
}
$.ajax({
type: "POST",
url: '/MyController/MyMethod',
data: {
model: formData,
test: test
}
});
控制器:
[HttpPost]
public void MyMethod(SomeModel model, AnotherModel test)
但是这样,model
变量变为空,并且填充了test
变量。为什么是这样?为什么模型之前已填充,现在却没有?
我测试了单独发送,但以不同的方式:
$.ajax({
type: "POST",
url: '/MyController/MyMethod',
data: {
model: formData
}
});
但model
仍为空。
答案 0 :(得分:1)
来自文档here:
数据:强>
键入:PlainObject或String或Array
关于PlainObject的文件:(强调我的)
PlainObject类型是一个JavaScript对象,包含零个或多个键值对。换句话说,普通对象是Object对象。它被指定为" plain"在jQuery文档中将其与其他类型的JavaScript对象区分开来:例如,null,用户定义的数组和主机对象(如document),所有这些对象的typeof值为" object。" jQuery.isPlainObject()方法标识传递的参数是否是普通对象。
您的data
不具备PlainObject
,String
或Array
的资格。