none
Ayuda con subir archvos a servidor y poder listarlos, y despues de subir volver a la pagina donde estaba. RRS feed

  • Pregunta

  •  amigos recurro nuevamente a ustede por el siguiente problema en la vista Details, tengo un tab panel  de Adjunto y dentro de este tengo 2  panel uno que uso para subir el archivo y otro para listar los adjuntos

    el problema radica principalmente en que despues de subir el archvo no puedo regresar a la pagina details con el registro seleccionado.

    esta es la vista.

     @if (Model.LICITACIONID > 0)
            {
                <br />
                <div role="tabpanel" class="tab-pane" id="adjuntos">
                    <div role="tabpanel" id="informacion" class="tab-pane active">
                        <div class="panel panel-default">
                            <div class="panel-heading">Subir Archivo al Servidor</div>
                            <div class="panel-body">
                                @using (Html.BeginForm("Adjuntar", "Licitacions", FormMethod.Post, new { id = "frm-adjuntar", enctype="multipart/form-data" }))                            
                                {
                                    <div class="row">
                                        <div class="col-xs-2 col-sm-2 col-md-2">
                                            <div class="form-group">
                                                @Html.TextBox("NombreDocumento", null, new { @class = "form-control col-sm-4", placeholder = "Nombre dell Documento", autocomplete = "off", onKeyUp = "this.value=this.value.toUpperCase();" })
                                            </div>
                                        </div>
    
                                        <div class="col-xs-2 col-sm-2 col-md-2">
                                            <div class="form-group">
                                                <input type="hidden" name="Licitacion_Id" value="@Model.LICITACIONID" />
                                            </div>
                                        </div>
    
                                        <div class="col-xs-6 col-sm-6 col-md-6">
                                            <div class="form-group">
                                                <input type="file" name="documento" />
                                            </div>
                                        </div>
                                        <div class="col-xs-2">
                                            <button type="submit" class="btn btn-primary btn-block">Adjuntar</button>
                                        </div>
    
                                    </div>
                                }
                            </div>
                        </div>
                    </div>
    
                    <br />
                    <div role="tabpanel" id="informacion" class="tab-pane active">
                        <div class="panel panel-default">
                            <div class="panel-heading">Documentos Adjuntos</div>
                            <div class="panel-body">
                                <div id="adjuntos-cargados">
                                    Cargando Documentos Adjuntos...
                                </div>
                            </div>
                        </div>
                    </div>
    
                </div>
            }

    y estoy son los eventos del controlador.

    /*Adjuntar Documentos de la Licitacion*/
            public JsonResult Adjuntar(string NombreDocumento, int Licitacion_Id, HttpPostedFileBase documento)
            {
                var respuesta = new RespuestaModel
                {
                    respuesta = true,
                    redirect = "/Licitacions/details/" + Licitacion_Id,
                    error = ""
                };
               
    
                if ((documento != null) && (NombreDocumento !=null))
                {
                    string adjunto = DateTime.Now.ToString("yyyyMMddHHmmss") + Path.GetExtension(documento.FileName);
                    documento.SaveAs(Server.MapPath("~/Content/Documentos/" + adjunto));
    
                    GuardarAdjuntar(new LICITACIONADJUNTO
                    {
                        NOMBREARCHIVO = NombreDocumento,
                        LICITACIONID = Licitacion_Id,
                        RUTA = adjunto,
    
                    });
                }
                else
                {
                    respuesta.respuesta = false;
                    respuesta.error = "Debe Proporcionar Nombre y Ruta del documento";
                }
                return Json(respuesta);
            }
    
            /* vista parcial de archivos adjuntos*/
            public List<LICITACIONADJUNTO> ListarAdjuntos(int LicitacionID)
            {
                var adjuntos = new List<LICITACIONADJUNTO>();
                try
                {               
                  adjuntos = db.LicitacionAdjuntos
                             .Where(x => x.LICITACIONID == LicitacionID)
                             .OrderByDescending( x=> x.ADJUNTOID)
                             .ToList();
                    
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message);
                }
                return adjuntos;
            }
    
            /*Listar arhivos  de la licitacion*/
            public PartialViewResult Adjuntos(int LicitacionID)
            {
                return PartialView(ListarAdjuntos(LicitacionID));
            }
    
            /*Adjuntar archivo a la licitacion*/
            public void GuardarAdjuntar(LICITACIONADJUNTO adjunto)
            {
                try
                {                 
                  //db.Entry(db.Licitacion).State = EntityState.Unchanged;
                 // db.Entry(db.LicitacionAdjuntos).State = EntityState.Added;
                  db.LicitacionAdjuntos.Add(adjunto);             
                  db.SaveChanges();
                    
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message);
                }
            }
    
    
            /*Eliminar Archivo Adjunto de la Base de datos y de la carpeta*/        
            public ActionResult EliminarAdjunto(int? id)
            {
                string path = string.Empty;
                try
                {
                    LICITACIONADJUNTO Adjunto = db.LicitacionAdjuntos.Find(id);
                    //obtengo el nombre del archivo a eliminar
                    var AdjuntoEliminar = new LICITACIONADJUNTO()
                    {
                        NOMBREARCHIVO = Adjunto.RUTA,                   
                    };
    
                    if (id != null)
                    {
                        //path = Path.Combine(Server.MapPath("~/Content/Documentos/"), AdjuntoEliminar.RUTA);
                        var archivo = Path.Combine(HttpContext.Server.MapPath("~/Content/Documentos/"), AdjuntoEliminar.NOMBREARCHIVO);
                        if (System.IO.File.Exists(archivo))
                        {
                            System.IO.File.Delete(archivo);
                        }
                        db.LicitacionAdjuntos.Remove(Adjunto);
                        db.SaveChanges();
                    
                    }
                    
                }
                catch (Exception)
                {
                    
                    throw;
                }
               
                return RedirectToAction("Index");
            }


    y este el es json

    <script>
        $(document).ready(function () {
    
            @if (Model.LICITACIONID > 0)
            {
                <text>
                    CargarAdjuntos();
                </text>
            }
                  
    
            /*Codigo para subier el archivo al servidor*/
            $("#frm-adjuntar").submit(function () {
                var form = $(this);
                debug;
                form.ajaxSubmit({            
                    dataType: 'JSON',
                    type: 'POST',
                    url: form.attr('action'),
                    success: function (r) {
                        if (r.respuesta) {                        
                            CargarAdjuntos();                        
                        }
                        else {
                            alert(r.error);
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        alert(errorThrown);
                    }
                });
    
                return false;
            })
        })
    
        function CargarAdjuntos() {
            $("#adjuntos-cargados").load("@Url.Content("~/Licitacions/adjuntos?LicitacionID=" + Model.LICITACIONID)");        
        }
    </script>

    agradeceria me echen una mano


    Horacio Xochitemol Bautista

    lunes, 20 de junio de 2016 15:17

Todas las respuestas

  • Te sale algun error?

    Pon un brake point al momento de terminar el guardado de documentos junto antes de redireccionar a la lista de adjuntos y así ver mejor que sucede.


    Javier

    lunes, 20 de junio de 2016 18:16
  •  hola javier muchas gracias por responde mira me manda a una pagina con el siguiente texto

    {"respuesta":true,"redirect":"/Licitacions/details/228","error":""}

    estoy probando que pasa.


    Horacio Xochitemol Bautista

    lunes, 20 de junio de 2016 22:37
  • Te está devolviendo un JsonResult, por eso te sale eso. 

    Primero tienes que colocar [HttpPost] arriba de tu JsonResult Adjuntar, ya que es una petición POST


    Javier

    martes, 21 de junio de 2016 2:17
  • que tal amigo ya puse el [httppost], sin embargo me sigue mandando el mismo resultado del json; estoy probando regresarlo a un viewbag.error y ahi si funciona, no se en que estare aml en el json.

    Saludos y muchas gracias.


    Horacio Xochitemol Bautista

    martes, 21 de junio de 2016 14:41
  • Revisa esto: 
    $("#frm-adjuntar").submit(function () {
                var form = $(this);
                debug;
                form.ajaxSubmit({            
                    dataType: 'JSON',
                    type: 'POST',
                    url: form.attr('action'),
                    success: function (r) {
                        if (r.respuesta) {                        
                            window.location.href = url; //o directamente la página a donde quieres redireccionar                        
                        }
                        else {
                            alert(r.error);
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        alert(errorThrown);
                    }
                });
    
                return false;
            })
        })
    Cuando ya obtienes el resultado positivo de la carga redireccionas con window.location.href = "destino";

    Javier

    martes, 21 de junio de 2016 15:00
  • Revisa esto: 
    $("#frm-adjuntar").submit(function () {
                var form = $(this);
                debug;
                form.ajaxSubmit({            
                    dataType: 'JSON',
                    type: 'POST',
                    url: form.attr('action'),
                    success: function (r) {
                        if (r.respuesta) {                        
                            window.location.href = url; //o directamente la página a donde quieres redireccionar                        
                        }
                        else {
                            alert(r.error);
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        alert(errorThrown);
                    }
                });
    
                return false;
            })
        })
    Cuando ya obtienes el resultado positivo de la carga redireccionas con window.location.href = "destino";

    Javier

    en la línea 

    window.location.href = r.redirect;


    Javier

    martes, 21 de junio de 2016 15:30