none
Información de la vista se me pierde cuando la invoco con Ajax de Jquery RRS feed

  • Pregunta

  • Saludos nuevamente foro-

    Tengo un controlador que me valida si un numero existe en la base de datos y me retorna true o false. Le envio desde la vista por medio de ajax este numero y si me retorna true, realizo un llamado a una vista parcial que se supone que ya cuenta con informacion que me devuelve la bd. El problema se presenta que la vistaparcial que invoco me devuelve vacia y al parecer, porque cuando la llamo desde el ajax, se me pierde toda la informacion y me recibe el parametro como null. 

    Mi codigo a ver si pueden ayudarme y ver como hago para mantener mis datos aun despues de retornar a la vista y volver a otro controller.

    solicitud Ajax.

    <script>
    $("#btnconsultarDo").click(function () {
       
            $("#divEtapas").empty();
    
            var infodo = $("#infodo").val();
            $.ajax({
                url: "/DOrden/getInfodo",
                datatype: "text",
                data: { 'infodo': $("#infodo").val() },
                type: "POST",
                success: function (data) {
    
            if (data == "True") 
             {  
              $("#divEtapas").load('/DOrden/RegistrarEtapas');
             } 
            else {
                        alert('El Numero DO NO EXISTE');
                        $("#divEtapas").empty();
                 }
    
    
                },
                error: function () {
                    $("#divDocumentos").html("ERROR");
                }
            });
    });
    </script>

    mi controller que me retorna true

    public Boolean getInfodo(string infodo)
    {
      bool respuesta = false;
      
      DataTable dt = new DataTable();
      Session["DO"] = infodo;
      valorDO = Session["DO"].ToString();
    
      //verifica si el numero enviado desde ajax existe en bd
      objDo.VerificarDO(valorDO, ref dt);
    
       if (dt.Rows.Count > 0)
        {
       //llamo al método que me carga la información en la vista
          ListadoEtapas(valorDO);
                        
          respuesta = true;
        }
                
                
        return respuesta;
    }

    controller que me carga la información a la vista parcial

    public void ListadoEtapas(string valorDO)
    {
    
     listaEtapas = new List<RegistroEtapasDo>();
     RegistroEtapasDo regEtDo;
              
     DataTable dt = new DataTable();
    
     //metodo que me retorna un datatable con 3 registros de bd
       objDo.ListarEtapasPendientesDO(valorDO,ref dt);
     //por cada registro de dt me arma un objeto
       for (int i = 0; i < dt.Rows.Count; i++)
        {
          regEtDo = new RegistroEtapasDo
           {
           ID = int.Parse(dt.Rows[i].ItemArray[0].ToString()),
           D_ACTIVIDAD = dt.Rows[i].ItemArray[1].ToString(),
           OBSERVACION = string.Empty,
           ischeked = false
           };
            //cargo una lista de objetos por cada objeto
            listaEtapas.Add(regEtDo);
    
        }
    
    }

    Espero puedan ayudarme. Mil gracias.

    viernes, 16 de marzo de 2018 13:23

Todas las respuestas

  • hola

    en el codigo veo que usas

    $("#divEtapas").load('/DOrden/RegistrarEtapas');

    pero despues mencionas el action

    public void ListadoEtapas(string valorDO)

    como que no coinciden los nombre, uno es registrar el otro es listado

    estas seguro se invocas al action correcto, ademas si retornas una vista deberas ser ActionResult y no void

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 16 de marzo de 2018 14:27
  • lo siento, se me olvido este ultimo controller.

     public ActionResult RegistrarEtapas()
            {
                var registros = from e in listaEtapas select e;
    
    
                return PartialView(registros.ToList());
                
            }

    viernes, 16 de marzo de 2018 14:44