如何使用 $.ajax 发送由模型和列表(或 IEnumerable)模型组成的对象?

How to send a Object composed by Models and List (or IEnumerable) Models using $.ajax?

这是我的模型对象

public class VentaProd
{
    public IEnumerable<product> ListadoProductos {get; set;}
    public IEnumerable<account> ListadoClientes { get; set; }
    public sale Venta { get; set; }
}

如果我使用这个代码

$.ajax(
{
    type: "Post",
    dataType: "html",
    url: '@Url.Action("buscarproducto", "detalle")',
    data: {
        vp: @Model.Venta.id
    },
    success: function (data) {
        $('#divbuscar').html(data);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert("algo salio mal" + errorThrown);
    }
}
);

之前的代码有效,但我的控制器收到一个空对象,如果我更改此代码

data: {
    vp: @Model.Venta.id
},

来自

data: {
    vp: @Model
},

从未调用控制器方法 不幸的是我不能使用第一个代码,因为 我的对象 VentaProd 没有保存在数据库中并且没有 ID。

这是控制器方法

public ActionResult buscarproducto(ejercicio1.Models.ClasesCombinadas.VentaProd vp=null)
{
    return PartialView(vp);
}

如果您只想将选择的 ID 发回,则需要更改控制器方法的签名以仅匹配 ID 的类型:

    public ActionResult buscarproducto(int? id=null)

如果你想让模型作为一个整体回到你现有的控制器方法,那么你需要对其进行编码:

    vp: @Json.Encode(Model.Venta)