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

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
Todas las respuestas
-
-
-
-
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
-
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
-
Revisa esto:
en la línea$("#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
window.location.href = r.redirect;
Javier