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
,奇怪的是,这只发生在那些字段上。例如,对FiltrarPorCategorizacion
或Pagina
发送不同的值会产生正确的行为。
有人知道我能做些什么来找到原因/修复这个吗?
我想你的myNamespace。objtofiltro类缺少属性"FiltrarPorTexto"answers"Texto",而你的json对象需要一个"Nombre"属性。
没关系,这是他们犯下的最愚蠢的错误。对于那些有同样问题的人,确保你的JS对象和。net对象的字段有相同的名称