none
ajax como puedo pasar un metodo c# que esta en un servidor asp.net RRS feed

  • Pregunta

  • es posible, tomar un metodo que esta en una clase c# que esta en un servidor asp.net he leido que por medio del metodo de ajax se puedo traer un metodo de c# sharp y procesarlo en javascript y ejecutarlo desde el cliente me podrian decir si es posible y si es posible ponerme un ejemplo sencillo 
    domingo, 16 de octubre de 2011 21:47

Todas las respuestas

  • Hola,

    Una forma común de realizar lo que solicitas es mediante un framework ajax (p.e. AJAX ASP.NET) y un método de serivor que sea estático. Dale un vistazo a estos enlaces para hacerte una idea:

    http://www.variablenotfound.com/2007/05/llamar-mtodos-estticos-con-aspnet-ajax.html

    http://www.forosdelweb.com/f78/puede-llamar-funcion-c-desde-javascript-408268/

    Saludos,

    JA Reyes.


    Please remember to Vote & "Mark As Answer" if this post is helpful to you.
    Por favor, recuerda Votar y "Marcar como respuesta" si la solución de esta pregunta te ha sido útil.
    • Editado JA Reyes martes, 18 de octubre de 2011 7:50 ortografia
    lunes, 17 de octubre de 2011 8:13
  • en el ejemplo menciona que tengo que instalar algunas extensiones ajax para visual studio 2005, pero yo estoy utilizando visual studio 2008, tambien las tengo que agregar o vienen en el paquete
    lunes, 17 de octubre de 2011 17:06
  • Hola de nuevo,

    En Visual Studio 2008 las ASP.NET Ajax Extension ya vienen de serie, pero lo que necesitarias instalar serian los Ajax Controls Toolkit.

    En este otro enlace te explica como debes realizar el proceso de instalación:

    http://blog.ascariz.es/index.php/2008/12/05/como-instalar-las-extensiones-ajax-en-visual-studio-2008-para-aspnet-vbnet-y-cnet/

    Saludos,

    JA Reyes.


    Please remember to Vote & "Mark As Answer" if this post is helpful to you.
    Por favor, recuerda Votar y "Marcar como respuesta" si la solución de esta pregunta te ha sido útil.
    lunes, 17 de octubre de 2011 17:53
  • okokokok ya lo instale como decia el manual ahora les muestro el metodo que quiero hacer web method

    es muy grande mucho codigo y es un void asy no se si podra

    public void LlenarSolicitud(Trabajador sol)
        {
            Empleado empleado = new Empleado(sol);
            DateTime fechaCreacion = DateTime.Now;
            fechas = (List<DateTime>)Session["fechas"];
            Solicitud solicitud = new Solicitud();
    
            switch (solicitante.tipo)
            {
                case TEmp.Empleado:
                    int diasDisponibles = Convert.ToInt32(empleado.ObtenerDiasEmpleados(sol.antiguedad.años, sol.antiguedad.meses));
                    DateTime fechaProxima = empleado.ProximaFechaEmpleado(sol.antiguedad.años, sol.antiguedad.meses, sol.fechaIngreso);
    
                    if (fechas.Count > diasDisponibles)
                    {
                        var filtroMenoresUno = from fecha in fechas
                                            where fecha < fechaProxima
                                            select fecha;
                        if (filtroMenoresUno.ToList<DateTime>().Count > 0)
                        {
                        }
                        else
                        {
                            diasDisponibles += 10;
                            if (fechas.Count > diasDisponibles)
                            {
                            }
                            else
                            {
                                solicitud.IdEmpleado = sol.ID;
                                solicitud.IdCapturista = int.Parse(txtCapturista.Text);
                                solicitud.IdPuesto = sol.idPuesto;
                                solicitud.CentroCostos = sol.idDepartamento;
                                solicitud.DiasProgramados = (fechas.Count);
                                solicitud.Estado = (int)status.planeacion;
                                solicitud.IdJefeDirecto = int.Parse(txtIdJefedirecto.Text);
                                solicitud.IdRH = int.Parse(txtCapturista.Text);
                                solicitud.IdGerente = 0;
                                solicitud.FechaCreacion = fechaCreacion;
                                solicitud.FechasSeleccionadas = fechas;
                                solicitud.GuardarSolicitud();
                                solicitud.GuardarSolicitudDetalle();
                                cldCalendario.SelectedDates.Clear();
                                lstDiasSeleccionados.Items.Clear();
                                lstListaSolicitudes.Items.Clear();
                                lstListaSolicitudes.DataValueField = "idSolicitud";
                                lstListaSolicitudes.DataTextField = "fechaCreacion";
                                lstListaSolicitudes.DataSource = solicitud.TraerSolicitud(sol.ID);
                                lstListaSolicitudes.DataBind();
                                txtRespTotalDias.Text = diasDisponibles.ToString();
                                fechas.Clear();
                            }
                        }
                    }
                    else
                    {
                        solicitud.IdEmpleado = sol.ID;
                        solicitud.IdCapturista = int.Parse(txtCapturista.Text);
                        solicitud.IdPuesto = sol.idPuesto;
                        solicitud.CentroCostos = sol.idDepartamento;
                        solicitud.DiasProgramados = (fechas.Count);
                        solicitud.Estado = (int)status.planeacion;
                        solicitud.IdJefeDirecto = int.Parse(txtIdJefedirecto.Text);
                        solicitud.IdRH = int.Parse(txtCapturista.Text);
                        solicitud.IdGerente = 0;
                        solicitud.FechaCreacion = fechaCreacion;
                        solicitud.FechasSeleccionadas = fechas;
                        solicitud.GuardarSolicitud();
                        solicitud.GuardarSolicitudDetalle();
                        cldCalendario.SelectedDates.Clear();
                        lstDiasSeleccionados.Items.Clear();
                        lstListaSolicitudes.Items.Clear();
                        lstListaSolicitudes.DataValueField = "idSolicitud";
                        lstListaSolicitudes.DataTextField = "fechaCreacion";
                        lstListaSolicitudes.DataSource = solicitud.TraerSolicitud(sol.ID);
                        lstListaSolicitudes.DataBind();
                        txtRespTotalDias.Text = diasDisponibles.ToString();
                        fechas.Clear();
                    }
                    break;
                case TEmp.Sindicalizado:
                    long contador = 0;
                    diasDisponibles = Convert.ToInt32(empleado.ObtenerCountDiasSindicalizados(sol.antiguedad.años, ref contador));
                    fechaProxima = empleado.ProximaFechaSindicalizado(sol.antiguedad.años, sol.fechaIngreso);
                    solicitud.IdEmpleado = sol.ID;
                    solicitud.IdCapturista = int.Parse(txtCapturista.Text);
                    solicitud.IdPuesto = sol.idPuesto;
                    solicitud.CentroCostos = sol.idDepartamento;
                    solicitud.DiasProgramados = (fechas.Count);
                    solicitud.Estado = (int)status.planeacion;
                    solicitud.IdJefeDirecto = int.Parse(txtIdJefedirecto.Text);
                    solicitud.IdRH = int.Parse(txtCapturista.Text);
                    solicitud.IdGerente = 0;
                    solicitud.FechaCreacion = fechaCreacion;
                    solicitud.FechasSeleccionadas = fechas;
                    solicitud.GuardarSolicitud();
                    solicitud.GuardarSolicitudDetalle();
                    cldCalendario.SelectedDates.Clear();
                    lstDiasSeleccionados.Items.Clear();
                    lstListaSolicitudes.Items.Clear();
                    lstListaSolicitudes.DataValueField = "idSolicitud";
                    lstListaSolicitudes.DataTextField = "fechaCreacion";
                    lstListaSolicitudes.DataSource = solicitud.TraerSolicitud(sol.ID);
                    lstListaSolicitudes.DataBind();
                    txtRespTotalDias.Text = diasDisponibles.ToString();
                    fechas.Clear();
                    break;
    
                case TEmp.Asimilado:
                    diasDisponibles = 0;
                    fechaProxima = DateTime.Parse("00/00/0000");
                    break;
            }
        }
    

    segun el manual tengo que agregar la linea <WebMethod()> antes de la definicion del metodo pero me podrian ayudar a que mas, ahora otra duda tengo que usar un using para el ajax o algo

    lunes, 17 de octubre de 2011 18:38
  • Hola de nuevo,

    Si, como el articulo comenta, es necesario agregar el atributo [System.Web.Services.WebMethod()] y tambien definir tu método como static de la siguiente manera:

    [WebMethod]
     public static void LlenarSolicitud(Trabajador sol)
     {
        //...
     }
     
    


    Tu método podrá ser void solo si no es necesario que devuelva ningún valor al cliente.

    Puedes darle un vistazo a los posts del segundo enlace que te comenté en mi primer comentario. Alli también podras encontrar algunos ejemplos.

    Saludos,

    JA Reyes.

     


    Please remember to Vote & "Mark As Answer" if this post is helpful to you.
    Por favor, recuerda Votar y "Marcar como respuesta" si la solución de esta pregunta te ha sido útil.
    martes, 18 de octubre de 2011 8:05