【发布时间】:2022-10-24 19:43:56
【问题描述】:
我对 Asp.Net Core 完全陌生,我正在尝试实现一个库存控制系统。现在我面临将销售数据保存到数据库的问题。主要问题是我未能将数据带到控制器。我在数据库中有“销售”、“销售产品”和“产品”表。到目前为止我所尝试的,
Sales Create View 有一个用于选择产品的下拉列表,它使用 SalesViewModel 进行填充:
销售视图模型
public class SalesViewModel
{
public Sale Sale { get; set; }
public List<SelectListItem> Products { get; set; }
}
要创建销售项目列表,每次用户选择产品及其数量时,都会创建“subArray”并将该项目数组推送到“SalesItemArray”,
$('.btn-sales-add').on('click', function () {
let subArray = [];
let productId = $('#product-id').val();
let productName = $('#product-id option:selected').text();
let price = $('#sales-price').val();
let quanity = $('#sales-quantity').val();
let subTotal = $('#sales-sub-total').val();
quanity = parseInt(quanity);
subTotal = parseFloat(subTotal);
total += subTotal;
$('#sales-total input').val(total);
subArray.push(productId);
subArray.push(productName);
subArray.push(price);
subArray.push(quanity);
subArray.push(subTotal);
salesItemsArray.push(subArray);
});
数组格式
[[pro_id, pro_name, quantity, subTotal],[pro_id, pro_name, quantity, subTotal]]
为了将销售数据和销售项目带到控制器,我使用了 FormData 对象和另一个 FormDataViewModel,如this solution 所示
SalesFormDataViewModel
public class SalesFormDataViewModel
{
public string StoreId { get; set; }
public string Total { get; set; }
public string[] SalesItemList { get; set; }
}
我将 SalesViewModel 传递给查看并将 SalesFormDataViewModel 传递给控制器。我正在使用 Ajax 发布数据,
let storeId = $("#sales-store-id").val();
let total = $("#sales-total input").val();
let salesItemList = salesItemsArray;var
formData = new FormData();
formData.append("StoreId", storeId);
formData.append("Total", total);
formData.append("salesItemList", salesItemList);
$.ajax({
url: '/api/sales/createSales',
method: 'POST',
contentType: 'application/json',
data: JSON.stringify(formData),
success: function (response) {
alert('success');
},
error: function (response, error) {
alert('error');
}
});
控制器
[HttpPost]
[Route("createSales")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> createSales(SalesFormDataViewModel
salesFormDataViewModel)
{
return Ok(new { success = "Stock updated successfully" });
}
实际上,我已经尝试了几乎所有搜索网络的解决方案,但无论尝试什么,每次我得到相同的错误响应。我什至无法到达控制器中的断点,因为 ajax 引发异常。 Ajax Response
拜托,我期待着你的帮助。谢谢你。
我正在编辑此问题以添加更多详细信息。在尝试陈的解决方案后,现在得到this error
【问题讨论】:
-
好吧,
"Each time user select a product and it's quantity, 'subArray' will be created and that item array will be pushed to 'SalesItemArray',",你能告诉我们你是怎么做到的吗? -
另外,请问
SalesFormDataViewModel类的详细定义是什么?
标签: asp.net asp.net-core asp.net-core-mvc asp.net-core-6.0