2012-09-13 4 views
6

Wenn ich versuche, Bilder auf meine MVC-Controller-Aktion hochzuladen, und es einen Validierungsfehler gibt, muss ich durch jede der Schaltflächen klicken und alle meine Dateien erneut finden.Rückgabe von HttpPostedFileBase zur Anzeige eines Validierungsfehlers

Wenn ich eine Ansicht, die die Dateien von

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

und eine Controller-Aktion wie

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

besteht auf dem Server fein gepostet, aber wenn es einen Fehler bei der Überprüfung Modell ist, gibt es Gibt es eine Möglichkeit, das Modell und die Dateien zurückzugeben, damit der Benutzer sie nicht erneut hochladen muss?

Antwort

8

Dies ist nicht möglich. Der Wert eines Eingabetyps = "Datei" wird niemals beim Parsen einer HTML-Seite verwendet. Das ist ein großes Sicherheitsrisiko, so dass kein moderner Browser ihnen erlaubt, Werte zu "behalten".

Wenn Sie sicher sind, dass Ihre Kunden-Browser verwenden, der mit HTML5-Unterstützung, können Sie JavaScript File API versuchen, um mit Postbacks zu beseitigen - Check folgenden Artikel:

+0

Vielen Dank für Ihre Antwort. Das war mein Verdacht, aber ich wollte nur sichergehen. Die von Ihnen zur Verfügung gestellten Artikel waren hilfreich. Danke nochmal. – kevskree