2012-09-13 10 views
6

Cuando intento cargar imágenes en la acción de mi controlador MVC y hay un error de validación, tengo que hacer clic en cada uno de los botones y buscar todos mis archivos nuevamente.Devolución de HttpPostedFileBase para ver el error de validación

Si tengo una visión que consiste en

<input type="file" id="file0" name="Files[0]" /> 
<input type="file" id="file1" name="Files[1]" /> 

y una acción del controlador como

public ActionResult Create(ModelClass model, IEnumerable<HttpPostedFileBase> Files) 
{ 
    if(ModelState.IsValid) 
    { 
     //do work 
     if(PhotoValidation.IsValid(Files)) 
     { 
      //do work 
     } 
     else 
     { 
      ModelState.AddModelError("","Photos not valid"); 
     } 
    } 
    return view(model); // Way to return photos back to the view on modelstate error? 
} 

Los archivos se publican en la multa del servidor pero si hay un error de validación de modelos, está ahí ¿Hay alguna manera de devolver el modelo Y los archivos para que el usuario no tenga que volver a subirlos?

Respuesta

8

Esto no es posible. El valor de un intput type = "file" nunca se usa al analizar una página HTML. Ese es un gran riesgo de seguridad, por lo que ningún navegador moderno les permitirá 'retener' los valores.

Si está seguro de que sus clientes están utilizando navegador que soporte HTML5, puede intentar utilizar la API de JavaScript de archivos con el fin de eliminar las devoluciones de datos - de verificación siguientes artículos:

+0

Gracias por su respuesta. Esa era mi sospecha, pero solo quería asegurarme. Los artículos que brindó fueron útiles. Gracias de nuevo. – kevskree

Cuestiones relacionadas