JQuery和c#代码背后的不同值

本文关键字:背后 代码 JQuery | 更新日期: 2023-09-27 18:05:28

我正在写一个ASP。. NET 3.5应用程序,我通过AJAX从网页传递值到后面的代码。

传递的对象:

var queryData = {
    'FiltrarPorTexto': false,
    'Texto': "",
    'FiltrarPorCategorizacion': false,
    'FiltrarPorTipo': false,
    'Tipo': 0,
    'Pagina': 1
};

我的AJAX调用:

$.ajax({
    type: "POST",
    url: 'SDI_generararchivosbloomberg.aspx/ObtenerListadoInstrumentosJSON',
    data: '{ "datosPeticion": ' + JSON.stringify(queryData) + ' }',
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function(response) {
        // ...
        },
    error: function(xhr, msg, msg2) {
        // ...
    }
});
我的后台代码:

[WebMethod]
[ScriptMethod]
public static ObjetoRespuesta ObtenerListadoInstrumentosJSON(ObjetoFiltro datosPeticion)
{
    if (datosPeticion.Pagina < 0) return new ObjetoRespuesta
        {
            PaginaActual = 0,
            TotalPaginas = 0,
            TotalRegistros = 0,
            HtmlTabla = "Error: el número de página no puede ser menor a 0"
        };
    var elementosASaltar = (datosPeticion.Pagina - 1) * ELEMENTOS_POR_PAGINA;
    var listado = bdc.GetTable<INSTRUMENTOS_BLOOMBERG>().AsQueryable();
    if (datosPeticion.FiltrarPorNombre) listado = listado.Where(i => i.NEMO_INSTRUMENTO.Contains(datosPeticion.Nombre));
    if (datosPeticion.FiltrarPorCategorizacion) listado = listado.Where(i => !i.ESTADO_CATEGORIZACION);
    if (datosPeticion.FiltrarPorTipo) listado = listado.Where(i => i.TIPO_INSTRUMENTO == (insts.Find(r => r.Id == datosPeticion.Tipo)).Id);
    var cantidadTotal = listado.Count();
    if (cantidadTotal < 1) return new ObjetoRespuesta
        {
            PaginaActual = 0,
            TotalPaginas = 0,
            TotalRegistros = 0,
            HtmlTabla = "Error: No se encontraron elementos"
        };
    if (elementosASaltar > 0) listado = listado.Skip(elementosASaltar);
    listado = listado.Take(ELEMENTOS_POR_PAGINA);            
    return new ObjetoRespuesta
    {
        PaginaActual = datosPeticion.Pagina,
        TotalPaginas = (cantidadTotal / ELEMENTOS_POR_PAGINA),
        TotalRegistros = cantidadTotal,
        HtmlTabla = GenerarTablaHtml(listado)
    };
 }

我的问题是,有些字段在代码隐藏中没有被正确复制。例如,当queryData对象为:

queryData
{...}
    FiltrarPorTexto: true
    Texto: "PEN"
    FiltrarPorCategorizacion: false
    FiltrarPorTipo: false
    Tipo: 0
    Pagina: 1

在代码后面被反序列化的是:

datosPeticion
{myNamespace.ObjetoFiltro}
    FiltrarPorCategorizacion: false
    FiltrarPorNombre: false
    FiltrarPorTipo: false
    Nombre: null
    Pagina: 1
    Tipo: 0

,奇怪的是,这只发生在那些字段上。例如,对FiltrarPorCategorizacionPagina发送不同的值会产生正确的行为。

有人知道我能做些什么来找到原因/修复这个吗?

JQuery和c#代码背后的不同值

我想你的myNamespace。objtofiltro类缺少属性"FiltrarPorTexto"answers"Texto",而你的json对象需要一个"Nombre"属性。

没关系,这是他们犯下的最愚蠢的错误。对于那些有同样问题的人,确保你的JS对象和。net对象的字段有相同的名称