none
ActionResult hace refresh a pesar de que envió los datos por ajax RRS feed

  • Pregunta

  • Buen día, Creo el siguiente tema por un problema que estoy presentando. Resulta que estoy enviando por ajax una información de un formulario junto con un input file que acepta múltiples archivos, hasta aquí todo funciona perfecto, el problema nace al momento de ejecutar el método .SaveAs() porque de alguna forma u otra genera un refresh en el formulario, cuando comento el método.SaveAs() no me genera el refresh. A continuación voy a dejar mis códigos

    HTML

    <form class="form-horizontal" enctype="multipart/form-data" id="formCreate">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title">Modal title</h4>
            </div>
            <div class="modal-body">
    
    
                <div id="div_Titulo" class="form-group">
                    <label class="col-sm-2 control-label">Titulo</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="Titulo" name="Titulo" placeholder="Titulo">
                        <label id="Error_Titulo" class="control-label" for="inputError2"></label>
                    </div>
                </div>
               
                <div id="div_Descripcion" class="form-group">
                    <label class="col-sm-2 control-label">Descripcion del requerimiento</label>
                    <div class="col-sm-10">
                        <textarea id="Descripcion" class="form-control" name="Descripcion" rows="3" placeholder="Descripcion del requerimiento"></textarea>
                       
                        <label id="Error_Descripcion" class="control-label" for="inputError2"></label>
                    </div>
                </div>
    
                
                <div class="form-group">
    
                    <label class="col-sm-2 control-label">Agregar archivos</label>
                    <div class="col-sm-10">
                        <input id="file" name="file" type="file" multiple>
                    </div>
    
                </div>
    
                <input type="hidden" id="hddRuta" name="hddRuta" value="" />
    
    
                <div id="alert_success" class="alert alert-success" role="alert">Informacion procesada satisfactoriamente</div>
                <div id="alert_danger" class="alert alert-danger" role="alert"></div>
    
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <input type="submit" value="Enviar" class="btn btn-primary" id="btnEnviar">
            </div>
        </div>
    </form>

    JS al momento de hacer click en el boto submit

     $("#formCreate").submit(function (e) {
            e.preventDefault();
            //ruta la cual recibira nuestro archivo
            url = "/OperationsTaks/SaveUploadedFile";
            var parametros = new FormData($(this)[0]);
            var list = {
                Titulo: $('#Titulo').val(),
                Descripcion: $('#Descripcion').val()
            }
             //CREO EL AJAX
             
            $.ajax({
                type: "POST",
                url: "/OperationsTaks/Create",
                contentType: 'application/json; charset=utf-8',
                data: parametros,
                cache: false,
                contentType: false, 
                processData: false, 
                dataType: "json",
                success: function (data) {
                   
                    if (data.success) {
    
                        $.each(list, function (key, value) {
                            $("#Error_" + key).html('');
                            $("#div_" + key).removeClass(" has-error has-feedback");
                        });
                        $('#alert_success').show("fast");
                        $("#btnEnviar").prop('disabled', true);
                        $('#alert_danger').hide();
    
                        
                    }
                    else {
    
                        $.each(data.Errors, function (key, value) {
                            
                            if (value != null) {
                                $("#Error_" + key).html(value[value.length - 1].ErrorMessage);
                                $("#div_" + key).addClass(" has-error has-feedback");
                            }
                        });
                    }
                },
                error: function (data) {
                    $('#alert_danger').html('error');
                    $('#alert_danger').show("fast");
                },
    
            });
          
        });

    Vale destacar que en el js tengo el  e.preventDefault(); y tambien e usado el e.stoppropagation() y ninguno me ha funcionado

    Controller

     [HttpPost]
            public ActionResult Create(Task tasks, HttpPostedFileBase[] file)
            {
               
                try
                {
                    bool bsuccess = false;
                    int id = 0;
                    if (ModelState.IsValid)
                    {
                       
                      //  tasks.ruta_foto = CrearDirectorio(IDRuta);
                        tasks.FechaCreacion = DateTime.Now.Date;
                        tasks.FechaFinalizacion = DateTime.Now.Date;
                        db.Tasks.Add(tasks);
                        db.SaveChanges();
                        var getLast = db.Tasks.OrderByDescending(u => u.TaskID).FirstOrDefault();
                        id = getLast.TaskID;
                        bsuccess = true;
                        if (file.Count() > 0)
                        {
                             SaveUploadedFile(file, id);
                        }
    
                    }
                    return Json(new { success = bsuccess, Errors = GetErrorsFromModelState(), JsonRequestBehavior.AllowGet });
                }
                catch (Exception ex)
                {
                    return View();
                }
            }

    Y continuación el método donde esta el SaveAs()

      private void  SaveUploadedFile(HttpPostedFileBase[] file,int id) {
                foreach (HttpPostedFileBase Archivo in file)
                {
                    if (Archivo != null)
                    {
                        if (Archivo != null && Archivo.ContentLength > 0)
                        {
                            var originalDirectory = new DirectoryInfo(string.Format("{0}Images\\" + id, Server.MapPath(@"\")));
                            string pathString = Path.Combine(originalDirectory.ToString());
                            var fileName1 = Path.GetFileName(Archivo.FileName);
                            bool isExists = System.IO.Directory.Exists(pathString);
    
                            if (!isExists)
                                System.IO.Directory.CreateDirectory(pathString);
    
                            var path = string.Format("{0}\\{1}", pathString, Archivo.FileName);
    
    
                            Files modelFiles = new Files
                            {
                                nombre = Archivo.FileName,
                                ruta = pathString,
                                TaskID = id
                            };
    
    
                            Archivo.SaveAs(path);
                            db.Files.Add(modelFiles);
                            db.SaveChanges();
                        }
                       
                    }
                   
                    
                }
               
            }

    La pagina me muestra parte del código comentado pero aquí les dejo un print

    metodo donde esta el problema


    Sin mas nada que agregar me despido


    lunes, 15 de mayo de 2017 5:54