JQuery和C#代码隐藏之间的值不同
我正在编写一个ASP.NET3.5应用程序,并通过AJAX将值从网页传递给代码 我经过的物体: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
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