我正在向控制器(ASP.Net 核心 MVC)發出 AJAX POST 請求,但該引數的值卻為空。我嘗試了 stackoverflow 上給出的幾種解決方案。但是,我無法糾正它。請幫忙。
我的觀點是收取課費資訊。可能有不止一次付款。
$(function () {
$('#sendSlip').click(function (e) {
e.preventDefault();
let fees = new Array(); //To store payment info
let tb = $('#feesTable:eq(0) tbody');
//Collecting info of each payment
tb.find("tr").each(function () {
let row = $(this);
let fee = {};
if (row.find('input:checkbox:first').is(':checked')) {
fee.ClassId = row.find("TD").eq(0).html();
fee.FeeId = row.find("TD").eq(1).html();
fee.Amount = row.find(".fee").html();
fee.Month = row.find(".month").html();
fees.push(fee);
}
});
//Arranging data to send to controller
var data = {
fees: fees,
Bank: $(".bank").val(),
PaidAmount : $(".amount").val(),
PaidDate : $(".date").val()
};
console.log(data);
$.ajax({
type: 'POST',
url: '@Url.Action("StudentPayment_Create", "StudentPayment")',
contentType: "application/json",
headers: { 'RequestVerificationToken': gettoken() },
data: //{ data: JSON.stringify(data) },
JSON.stringify(data) ,
})
});
});
模型
public class StudentPaymentSlipVM
{
public StudentPaymentPaidClassVM fees { get; set; }
public string Bank { get; set; }
public DateTime PaidDate { get; set; }
public int PaidAmount { get; set; }
}
控制器
public ActionResult StudentPayment_Create([FromBody] List<StudentPaymentSlipVM> data)
{
---
}
運行時的物件詳細資訊

uj5u.com熱心網友回復:
從您附加的要傳遞給控制器??的資料截圖來看,資料的結構與控制器預期的資料模型不匹配。
假設前端的資料結構是正確的。
控制器應該期望接收到的資料是一個StudentPaymentSlipVM物件。在StudentPaymentSlipVM物件中,fees是一個StudentPaymentPaidClassVM陣列。
模型
public class StudentPaymentSlipVM
{
public List<StudentPaymentPaidClassVM> fees { get; set; }
public string Bank { get; set; }
public DateTime PaidDate { get; set; }
public int PaidAmount { get; set; }
}
控制器
public ActionResult StudentPayment_Create([FromBody] StudentPaymentSlipVM data)
{
}
而從您的 JQuery 部分,請確保您要傳遞給 API 的資料物件必須與作為后端模型的資料型別匹配。
var data = {
fees: fees,
Bank: $(".bank").val(),
PaidAmount : parseInt($(".amount").val()),
PaidDate : $(".date").val()
};
uj5u.com熱心網友回復:
我試圖通過系結到具有所有必需定義的 ViewModel (StudentPaymentSlipVM) 將我的資料傳遞給控制器??。但我做不到。所以我改變了方式并將我的物件按照以下方式傳遞給 Controller 現在它正在作業。我還要感謝永順。
- 更改了 JQuery 代碼
$.ajax({
type: 'POST',
url: '@Url.Action("action", "controller")',
headers: { 'RequestVerificationToken': gettoken() },
data: dataObj,
})
- 我改變了控制器
[HttpPost]
public ActionResult StudentPayment_Create(List<StudentPaymentPaidClassVM> Fees, string Bank, decimal PaidAmount, DateTime PaidDate)
{
.....
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/393733.html
標籤:javascript 查询 网站 asp.net核心
