Я вызываю действие mvc с помощью jquery и передаю два массива.я видел, что мое действие вызывается, но никакие правильные данные не передаются в действие.shipmentkey и BOLPdfInputs обнуляются на уровне действия.Скажите, пожалуйста, где я допустил ошибку?
Вот мой код
[HttpGet]
public PdfResult DownloadPdf(List<string> shipmentkey, List<BOLPdfInputs> BOLPdfInputs)
{
}
$('#btnSave').on('click', function () {
alert('hello')
debugger;
var shipmentkeys = [];
var BOLPdfInputs = [];
var BOLPdfInput = new Object();
var totalbol = $("[id^=mainDivContainer_]").length;
for (var i = 0; i <= totalbol - 1; i++) {
var shipmentkey = $('#hiddenshipmentkey_' + (i + 1)).val();
shipmentkeys.push(shipmentkey);
}
for (var i = 0; i <= totalbol - 1; i++) {
var BOLPdfInput = {
AgreedValue1: ($('#txtAgreedValue1_' + (i + 1)).val() != '' ? $('#txtAgreedValue1_' + (i + 1)).val() : ''),
AgreedValue2: ($('#txtAgreedValue2_' + (i + 1)).val() != '' ? $('#txtAgreedValue2_' + (i + 1)).val() : ''),
CodAmount: ($('#txtCodAmount_' + (i + 1)).val() != '' ? $('#txtCodAmount_' + (i + 1)).val() : ''),
ShipperSignature: ($('#txtShipperSignature_' + (i + 1)).val() != '' ? $('#txtShipperSignature_' + (i + 1)).val() : ''),
FreeTermsCollect: ($('#ChkFreeTermsCollect_' + (i + 1)).val() != '' ? $('#ChkFreeTermsCollect_' + (i + 1)).val() : ''),
FreeTermsPrePaid: ($('#ChkFreeTermsPrePaid_' + (i + 1)).val() != '' ? $('#ChkFreeTermsPrePaid_' + (i + 1)).val() : ''),
FreeTermsCustomerCheque: ($('#ChkFreeTermsCustomerCheque_' + (i + 1)).val() != '' ? $('#ChkFreeTermsCustomerCheque_' + (i + 1)).val() : ''),
TrailerByShipper: ($('#ChkTrailerByShipper_' + (i + 1)).val() != '' ? $('#ChkTrailerByShipper_' + (i + 1)).val() : ''),
FreightByShipper: ($('#ChkFreightByShipper_' + (i + 1)).val() != '' ? $('#ChkFreightByShipper_' + (i + 1)).val() : ''),
TrailerByDriver: ($('#ChkTrailerByDriver_' + (i + 1)).val() != '' ? $('#ChkTrailerByDriver_' + (i + 1)).val() : ''),
FreightByDriverPallets: ($('#ChkFreightByDriverPallets_' + (i + 1)).val() != '' ? $('#ChkFreightByDriverPallets_' + (i + 1)).val() : ''),
FreightByDriverPieces: ($('#ChkFreightByDriverPieces_' + (i + 1)).val() != '' ? $('#ChkFreightByDriverPieces_' + (i + 1)).val() : '')
};
BOLPdfInputs.push(BOLPdfInput);
}
$.ajax({
type: "GET",
url: '@Url.Action("DownloadBOLPdf", "Shipment")',
//data: '{ "shipmentkey":' + JSON.stringify(shipmentkeys) + '}',
data: JSON.stringify({ shipmentkey: shipmentkeys, BOLPdfInputs: BOLPdfInputs }),
success: function (data) {
alert('Hello');
},
dataType: "json",
});
});
РЕДАКТИРОВАТЬ
изменить код, но все еще не работает.
Iвнесены некоторые изменения в код, как вы сказали, например, действие должно быть post type и contentType: 'application / json' .но все еще не работает.после выполнения действия типа POST теперь он не вызывается.
Сэр, пожалуйста, посмотрите и скажите, что мне нужно изменить в коде, в результате должен быть вызван мой код на стороне сервера, и данные должны быть правильно переданыдействие.
$('#btnSave').on('click', function () {
alert('hello11')
debugger;
var shipmentkeys = [];
var BOLPdfInputs = [];
var BOLPdfInput = new Object();
var totalbol = $("[id^=mainDivContainer_]").length;
for (var i = 0; i <= totalbol - 1; i++) {
var shipmentkey = $('#hiddenshipmentkey_' + (i + 1)).val();
shipmentkeys.push(shipmentkey);
}
for (var i = 0; i <= totalbol - 1; i++) {
var BOLPdfInput = {
AgreedValue1: ($('#txtAgreedValue1_' + (i + 1)).val() != '' ? $('#txtAgreedValue1_' + (i + 1)).val() : ''),
AgreedValue2: ($('#txtAgreedValue2_' + (i + 1)).val() != '' ? $('#txtAgreedValue2_' + (i + 1)).val() : ''),
CodAmount: ($('#txtCodAmount_' + (i + 1)).val() != '' ? $('#txtCodAmount_' + (i + 1)).val() : 0),
ShipperSignature: ($('#txtShipperSignature_' + (i + 1)).val() != '' ? $('#txtShipperSignature_' + (i + 1)).val() : ''),
FreeTermsCollect: ($('#ChkFreeTermsCollect_' + (i + 1)).is(":checked") ? 1 : 0),
FreeTermsPrePaid: ($('#ChkFreeTermsPrePaid_' + (i + 1)).is(":checked") ? 1 : 0),
FreeTermsCustomerCheque: ($('#ChkFreeTermsCustomerCheque_' + (i + 1)).is(":checked") ? 1 : 0),
TrailerByShipper: ($('#ChkTrailerByShipper_' + (i + 1)).is(":checked") ? 1 : 0),
FreightByShipper: ($('#ChkFreightByShipper_' + (i + 1)).is(":checked") ? 1 : 0),
TrailerByDriver: ($('#ChkTrailerByDriver_' + (i + 1)).is(":checked") ? 1 : 0),
FreightByDriverPallets: ($('#ChkFreightByDriverPallets_' + (i + 1)).is(":checked") ? 1 : 0),
FreightByDriverPieces: ($('#ChkFreightByDriverPieces_' + (i + 1)).is(":checked") ? 1 : 0)
};
BOLPdfInputs.push(BOLPdfInput);
}
alert(JSON.stringify(BOLPdfInputs));
//shipmentkey: JSON.stringify(shipmentkeys),
$.ajax({
type: "POST",
url: '@Url.Action("DownloadBOLPdf", "Shipment")',
data: { shipmentkey: JSON.stringify(shipmentkeys), BOLPdfInputs: JSON.stringify(BOLPdfInputs) },
success: function (data) {
alert('Hello');
},
dataType: "json",
contentType: 'application/json'
});
});
Мое действие
[HttpPost]
public PdfResult DownloadBOLPdf(List<string> shipmentkey, List<BOLPdfInputs> BOLPdfInputs)
{
}
public class BOLPdfInputs
{
public BOLPdfInputs();
public string AgreedValue1 { get; set; }
public string AgreedValue2 { get; set; }
public decimal? CodAmount { get; set; }
public int? FreeTermsCollect { get; set; }
public int? FreeTermsCustomerCheque { get; set; }
public int? FreeTermsPrePaid { get; set; }
public int? FreightByDriverPallets { get; set; }
public int? FreightByDriverPieces { get; set; }
public int? FreightByShipper { get; set; }
public string ShipperSignature { get; set; }
public int? TrailerByDriver { get; set; }
public int? TrailerByShipper { get; set; }
}