2012-09-13 17 views
6

Gdy próbuję przesłać obrazy do mojej kontrolera MVC i pojawia się błąd sprawdzania poprawności, muszę kliknąć każdy z przycisków i znaleźć wszystkie moje pliki ponownie.Powracanie HttpPostedFileBase w celu wyświetlenia błędu sprawdzania poprawności

Jeśli mam widok, który składa się z

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

i działania kontrolera jak

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

Pliki uzyskać wysłana do grzywny serwera, ale jeśli nie ma błędu walidacji modelu, jest tam jakikolwiek sposób zwrócić model ORAZ Pliki, aby użytkownik nie musiał ich ponownie przesyłać?

Odpowiedz

8

To nie jest możliwe. Wartość typu intput = "file" nigdy nie jest używana podczas analizowania strony HTML. To duże zagrożenie bezpieczeństwa, więc żadna nowoczesna przeglądarka nie pozwoli im "zachować" wartości.

Jeżeli jesteś pewien, że klienci są za pomocą przeglądarki z obsługą HTML5, można spróbować użyć JavaScript API pliku w celu wyeliminowania postbacks - Sprawdź następujące artykuły:

+0

Dziękuję za odpowiedź. Takie było moje podejrzenie, ale chciałem się tylko upewnić. Artykuły, które podałeś, były pomocne. Jeszcze raz dziękuję. – kevskree

Powiązane problemy