2012-09-13 5 views
6

Quando si tenta di caricare le immagini sull'azione del controller MVC e si verifica un errore di convalida, devo fare clic su ciascuno dei pulsanti e trovare nuovamente tutti i miei file.Restituzione di HttpPostedFileBase per visualizzare l'errore di convalida

Se ho una visione che si compone di

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

ed un'azione di controllo come

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? 
} 

I file vengono inviati al bene server, ma se c'è un errore di validazione dei modelli, è lì un modo per restituire il modello AND i file in modo che l'utente non debba caricarli di nuovo?

risposta

8

Questo non è possibile. Il valore di un tipo di input = "file" non viene mai utilizzato durante l'analisi di una pagina HTML. Questo è un enorme rischio per la sicurezza, quindi nessun browser moderno permetterà loro di "mantenere" i valori.

Se si è certi che i client utilizzano browser con supporto HTML5, è possibile provare a utilizzare JavaScript API File al fine di eliminare i postback - controllo seguenti articoli:

+0

Grazie per la risposta. Quello era il mio sospetto ma volevo solo assicurarmi. Gli articoli che hai fornito sono stati utili. Grazie ancora. – kevskree

Problemi correlati