Ajax 将多个对象传递到我的控制器
我正在向控制器传递一个对象,如下所示:Ajax 将多个对象传递到我的控制器,ajax,asp.net-mvc,Ajax,Asp.net Mvc,我正在向控制器传递一个对象,如下所示: var form = JSON.stringify({ "subRevisedRequest": $('#frmRevised').val(), "subSubcontractor": $('#frmSubcontractor').val(), "subDescription": $('#frmDesc').val(), "subCostCode": $('#frmCostCode').val
var form = JSON.stringify({
"subRevisedRequest": $('#frmRevised').val(),
"subSubcontractor": $('#frmSubcontractor').val(),
"subDescription": $('#frmDesc').val(),
"subCostCode": $('#frmCostCode').val(),
"subAmt": $('#frmAmt').val(),
"subPaymentTerms": "terms",
"subRetainage": 10,
"subComments": $('#frmComment').val()
});
$.ajax({
url: '@Url.Action("CreateSubcontracts", "Routing")',
type: "POST",
datatype: "JSON",
contentType: "application/json; charset=utf-8",
data: form,
success: function(result) {
if (!result.success) {
$('#errormsg').empty();
$('#errormsg').append(result.message);
} else {
location.href = '@Url.Action("Index", "Home")';
}
},
error: function (result) {
alert("Failed");
}
});
我的控制器将此视为它正在查找的对象:
public ActionResult CreateSubcontracts(RoutingSubcontracts s)
我的问题是我只想再传一根线。我知道我可以制作特定于视图的模型,但我想知道我是否可以这样做,例如:
public ActionResult CreateSubcontracts(RoutingSubcontracts s, string bu)
我尝试了以下方法,但没有成功:
data: JSON.stringify({ "s": form, "bu": "251" }),
但复杂对象只是作为null出现。是否有一种方法可以同时传递对象和字符串?尝试在已有的JSON中添加字符串项。不要对它进行字符串化,否则它只会发送一个大字符串,您必须在服务器上再次解析它
var form = {
"subRevisedRequest": $('#frmRevised').val(),
"subSubcontractor": $('#frmSubcontractor').val(),
"subDescription": $('#frmDesc').val(),
"subCostCode": $('#frmCostCode').val(),
"subAmt": $('#frmAmt').val(),
"subPaymentTerms": "terms",
"subRetainage": 10,
"subComments": $('#frmComment').val(),
"bu": "251" // add it here
};
$.ajax({
url: '@Url.Action("CreateSubcontracts", "Routing")',
type: "POST",
datatype: "JSON",
data: form,
success: function(result) {
if (!result.success) {
$('#errormsg').empty();
$('#errormsg').append(result.message);
} else {
location.href = '@Url.Action("Index", "Home")';
}
},
error: function (result) {
alert("Failed");
}
});
在您的视图中,jquery为bu创建第二个var。像这样分配ajax调用中的数据
data: { "s" : form, "bu" : "251" }
public ActionResult CreateSubcontracts(RoutingSubcontracts s, string bu = "NoValue")
在控制器方法中,更改签名以包含bu的默认值,如下所示
data: { "s" : form, "bu" : "251" }
public ActionResult CreateSubcontracts(RoutingSubcontracts s, string bu = "NoValue")
设置默认值后,bu将像一个可选参数一样出于某种原因,我仍然需要严格处理第一个json对象,否则我只会收到500个错误。但加上它似乎已经解决了这个问题。谢谢