Objeto de JSON llega vacio a mi metodo –

El día de hoy vamos a responder una pregunta que encontramos en la red.

La situación es la siguiente:

El programador esta trabajando con Ajax y C#, utiliza un webservice en asmx para hacer trabajar con la capa de datos probablemente. Este es el caso que publicó.

 

Creé la siguiente función para enviar un objeto de un servicio mediante JSON pero cuando el objeto llega tiene todas las variables vacías:

[sourcecode language="csharp"]
var cpDate = new Object();
    cpDate = {
    OllPass: '',
    NewPass: '',
    ConfPass: ''
};

$(document).ready(function () {
    // Guardar Contraseña
    $('#btnAceptarCP').click(function () {
        ChangePass();
    });
});

 function ChangePass() {
    cpDate.OllPass = $('#txtOllPass').val();
    cpDate.NewPass = $('#txtNewPass').val();
    cpDate.ConfPass = $('#txtCPass').val();
}

$.ajax({
    type: "POST",
    url: '../Servicio/Servicio_Prueba.asmx/setContrasena',
    data: JSON.stringify({ solicitud: cpDate }),
    contentType: "application/json",
    async: false,
    dataType: "json",
    success: function (result) {
        alert(result.d);
    },
    error: function (result) {
        //Log the error to the console
    }
});
[/sourcecode]
[sourcecode language="csharp"]
public class Servicio_Prueba : System.Web.Services.WebService
{
    [WebMethod(EnableSession = true)]
    public object setContrasena(EntidadPass solicitud)
    {
        bool guardado = true;
        solicitud.setContrasena(solicitud);
        return guardado;
    }
}

public class EntidadPass
{
    string OllPass { get; set; }
    string NewPass { get; set; }
    string ConfPass { get; set; }

    public void setContrasena(EntidadPass solicitud)
    {

    }
}
[/sourcecode]

Efectivamente, los datos están llegando vacíos, porque la clase EntidadPass sus atributos no son accesibles, al momento de serializar el objeto.

Aquí les dejo la solucióna este código. Se modificó la clase EntidadPass de C# para que al serializar el objeto pudieran ser asignados a los parametros correspondientes.

 

[sourcecode language="csharp"]

public class EntidadPass
 {

 public string OllPass { get; set; }
 public string NewPass { get; set; }
 public string ConfPass { get; set; }

 public void setContrasena(EntidadPass solicitud)
 {

 }

 }
[/sourcecode]

Comments

comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *