javascript - Controller 从 Ajax 接收空数据

标签 javascript c# jquery ajax asp.net-mvc

我正在尝试使用 ajax 将集合从 View 发送到 Controller 。首先,我在 JavaScript 数组中完成数据,然后尝试将其传递到服务器:

    var funciones = $("#funcionesUsuario").data("kendoGrid").dataSource.data();
    var func = [];

    for (var i = 0; i < funciones.length; i++) {
        func.push({
            "Estado": 1,
            "FechaAlta": null,
            "UsuarioAlta": null,
            "FechaModificacion": null,
            "UsuarioModificacion": null,
            "BitConcilia": funciones[i].BitConcilia,
            "BitLectura": funciones[i].BitLectura,
            "BitSupervisa": funciones[i].BitSupervisa,
            "ConciliacionId": funciones[i].ConciliacionId,
            "UsuarioId": funciones[i].UsuarioId
        })
    }

    $.post(url, { funcionesUsuario: func })
        .done(function (data) {
        alert("good job");
    });

然后,由于我要发送 2 个对象的数据,因此我的参数是所述对象的 IEnumerable:

public void ActualizarFuncionesUsuario(IEnumerable<FuncionUsuario> funcionesUsuario)
    {
        //do something
    }

我的问题是 Controller 接收到 2 个对象,正如我在 funcionesUsuario.count 中看到的那样,但它们都是空的。

我尝试成功发送 int、bool 和其他类型的变量,所以我怀疑我在数据绑定(bind)方面做错了什么。

下面我附上了我发送的内容和我在另一方收到的内容的图片。

Picture of the js function Picture of the controller

这是 FuncionUsuario 模型:`

public class FuncionUsuario : AuditableEntity { 
    public int ConciliacionId { get; set; } 
    public int UsuarioId { get; set; } 
    public bool BitLectura { get; set; } 
    public bool BitConcilia { get; set; } 
    public bool BitSupervisa { get; set; } 
    public virtual Conciliacion Conciliacion { get; set; } 
    [Display(ResourceType = typeof(Global), Name = "Descripcion")] 
    [NotMapped] 
    public string Descripcion { get; set; } 
}

最佳答案

首先将数组构造为 java 脚本对象

var funciones = $("#funcionesUsuario").data("kendoGrid").dataSource.data();
var func = [];

for (var i = 0; i < funciones.length; i++) {
    func.push({
        Estado: 1,
        FechaAlta: null,
        UsuarioAlta: null,
        FechaModificacion: null,
        UsuarioModificacion: null,
        BitConcilia: funciones[i].BitConcilia,
        BitLectura: funciones[i].BitLectura,
        BitSupervisa: funciones[i].BitSupervisa,
        ConciliacionId: funciones[i].ConciliacionId,
        UsuarioId: funciones[i].UsuarioId
    })
}

接下来,正确地对它们进行字符串化

var payload = JSON.stringify(func);

然后将其作为 JSON 发布

$.ajax({
  url: url,
  type: "POST",
  contentType: "application/json",
  dataType: 'json'
  data: payload,
});

关于javascript - Controller 从 Ajax 接收空数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37844304/

相关文章:

c# - 异步操作-MVC

javascript - jQuery 验证 addMethod() 参数始终返回 true

javascript - 停止表单在后退按钮上再次执行

jquery - 使用 JQuery 淡入字符串字符?

javascript - Rails 调用另一台服务器会出现跨源问题

c# - 如何显示打印机属性/首选项对话框并保存更改?

javascript - ui-select 不运行标记 mod 并且无法读取未定义的属性 'length'

c# - 如何从文件夹中的页面重定向到根目录中的页面?

javascript - 如何通过拖放重新排序 4 个 div(使用 angular2/4)?

javascript - 如何将js类包装到短信中?