我的模型有多个输入的视图(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); }); };
“测试”:编号确实正确输入到控制器中的方法,但是模型现在突然为空?
我究竟做错了什么?
使用.serialize()会将您的模型序列化为查询字符串(例如someProperty=someValue&anotherProperty=anotherValue&...)。要添加其他名称/值对,您可以手动添加,例如
.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;