【发布时间】:2021-03-12 20:53:54
【问题描述】:
我正在尝试使用 ajax 和 asp .net 核心向控制器发送对象列表。我的问题非常简单,SO 中有很多关于我的问题的答案,但没有一个能解决我的问题。我是 ASP.NET CORE 的新手,但在 ASP.NET(普通)方面非常有经验。
调试时我得到一个null 对象列表。
这是我的代码:
var detalleVenta = new Array();
detalleVenta.length = 0;
$.each($("#tableventa tbody tr"), function () {
detalleVenta.push({
ProductoId: $(this).find('td:eq(6)').html(),
});
});
console.log(detalleVenta);
var datos =
{
// ignore this, i am trying to capture other data.
"Nit": document.getElementById('Nit').value,
"Nombres":document.getElementById('nombres').value,
"NoComprobante":document.getElementById('nocomprobante').value,
"ClienteId":document.getElementById('clienteselect').value,
"Direccion":document.getElementById('direccion').value,
"FormaPago":document.getElementById('selectformapago').value,
// This is the list I want to send to controller
"detalle": detalleVenta,
};
$.ajax(
{
url: '/Venta/GuardarVenta/',
method:"POST",
data: datos,
traditional: true,
success: function(data, state) {
location.reload();
return;
},
error: function(xhr, textStatus, txt) {
alert(xhr.responseText);
return;
}
});
在console.log(detalleVenta); 代码中我得到了这个:
但是当点击参数控制器时,我得到了这个:
这是我的 C# 代码:
public class VentaController : Controller
{
[HttpPost]
public JsonResult GuardarVenta(List<Binderr> detalle, Venta venta)
{
}
}
public class Binderr
{
public string ProductoId {get;set;}
}
参数Venta venta 捕获了良好的参数,但列表detalle 没有。我做错了什么?
编辑:尝试public JsonResult GuardarVenta(Binderr[] detalle, Venta venta 得到相同的结果,控制器中的列表为空。
【问题讨论】:
-
您正在发送一个数组并接受一个列表?
-
尝试了
public JsonResult GuardarVenta(Binderr[] detalle, Venta venta),但没有成功。结果相同。 -
我删除了我的答案,因为它不正确,但这很可能是找出正确的数据类型以在您的方法中接受的问题。您的 POST 有效负载显示 AJAX 正在发送一个名为 detalle 的 Binderr 对象数组,但您已尝试在您的方法中接收它,但它不起作用。我被难住了!
-
你认为这是asp net core的问题吗?因为在 asp.net 中这行得通
标签: javascript ajax asp.net-mvc asp.net-core