我正在将一个对象传递给我的控制器:
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形式出现。有没有办法可以传递对象和字符串?
答案 0 :(得分:1)
尝试在您已有的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");
}
});
答案 1 :(得分:0)
在你的视图中,jquery为bu创建第二个var。像你这样在你的ajax调用中分配数据;
data: { "s" : form, "bu" : "251" }
在你的控制器方法中,将签名更改为包含这样的默认值;
public ActionResult CreateSubcontracts(RoutingSubcontracts s, string bu = "NoValue")
使用默认值设置bu将作为可选参数