我的模型有多个输入视图(Html.TextBoxFor(x => x.attribute)等。我的ajax方法是:
function callMethod() {
$.ajax({
type: "POST",
data: $('#Form').serialize() ,
url: '@Url.Action("formMethod", "Test")',
}).done(function (newTable) {
$('#RefundTableDiv').html(newTable);
});
};
并且这完美地运行,该模型非常适合于formMethod,但是当我更改formMethod并添加另一个参数例如'int test'时它不再起作用了。
我的方法如下:
function callMethod() {
var number = 2;
$.ajax({
type: "POST",
data: {"model": $('#Form').serialize(),
"test": number},
url: '@Url.Action("formMethod", "Test")',
}).done(function (newTable) {
$('#RefundTableDiv').html(newTable);
});
};
“test”:数字确实正确到了控制器中的方法,但模型现在突然变为空?
我做错了什么?
答案 0 :(得分:2)
使用.serialize()
将您的模型序列化为查询字符串(例如someProperty=someValue&anotherProperty=anotherValue&...
)。要添加其他名称/值对,您可以手动追加,例如
var data = $('#Form').serialize() + '&test=' + number;
$.ajax({
....
data: data;
或使用param()方法(如果要添加多个项目和/或数组,则非常有用)
var data = $("#Form").serialize() + '&' + $.param({ test: number }, true);
$.ajax({
....
data: data;
答案 1 :(得分:0)
function callMethod() {
var number = 2;
var sd = $('#Form').serializeArray();
sd.push({ name:"test", value:number });
$.ajax({
type: "POST",
data: sd,
url: '@Url.Action("formMethod", "Test")',
}).done(function (newTable) {
$('#RefundTableDiv').html(newTable);
});
};