Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery和C#代码隐藏之间的值不同_C#_Jquery_Asp.net_Ajax_Json - Fatal编程技术网

JQuery和C#代码隐藏之间的值不同

JQuery和C#代码隐藏之间的值不同,c#,jquery,asp.net,ajax,json,C#,Jquery,Asp.net,Ajax,Json,我正在编写一个ASP.NET3.5应用程序,并通过AJAX将值从网页传递给代码 我经过的物体: var queryData = { 'FiltrarPorTexto': false, 'Texto': "", 'FiltrarPorCategorizacion': false, 'FiltrarPorTipo': false, 'Tipo': 0, 'Pagina': 1 }; 我的AJAX调用: $.ajax({ type: "POST

我正在编写一个ASP.NET3.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)
    };
 }
隐藏代码中未序列化的是:

datosPeticion
{myNamespace.ObjetoFiltro}
    FiltrarPorCategorizacion: false
    FiltrarPorNombre: false
    FiltrarPorTipo: false
    Nombre: null
    Pagina: 1
    Tipo: 0
奇怪的是,这只发生在那些领域。例如,为
filterarprogategorizacion
Pagina
发送不同的值会产生正确的行为


有人知道我能做些什么来找到原因/解决这个问题吗?

没关系,这是一个愚蠢的错误。
对于存在相同问题的对象,请确保JS对象和.NET对象的字段具有相同的名称。

我认为myNamespace.ObjetoFiltro类缺少属性'FiltrarPorTexto'和'Texto',而json对象需要'Nombre'属性

我希望你能想象,当我意识到自己愚蠢的错误时,我所做的史诗般的脸谱。谢谢。facepalm越大,教训就越深刻,所以它在某种程度上是好的:DSide注意:为什么要用这么奇怪的代码来构造请求
JQuery.ajax
已经可以正确地创建JSON了-
数据:{datoSpection:queryData}
没有所有这些可疑的字符串操作..NET抛出一个无效的JSON原语错误。不得不求助于让它工作。对。。。它将JSON读取到对象,而不是写入对象。。对不起,这是错误的建议。
datosPeticion
{myNamespace.ObjetoFiltro}
    FiltrarPorCategorizacion: false
    FiltrarPorNombre: false
    FiltrarPorTipo: false
    Nombre: null
    Pagina: 1
    Tipo: 0