2009-09-05 3 views
0

У меня есть действие контроллера POST, как:ASP.NET MVC Request.Files не выжившие Model.IsValid = ложь

if (ModelState.IsValid) 
    { 
     try 
     { 
      //.. save and redirect code here 
     } 
     catch 
     { 
      //.. add errors to model state 
     } 
    } 

    return View(myModel); 

Мои request.files могут содержать 2 изображения из тегов:

<input id="MyImage" name="MyImage" type="file" /> 

Это хорошо работает, когда модель действительна, сохранение завершается, и я затем перенаправляю.

Однако моя проблема возникает, когда модель недействительна и я возвращаю свой объект в представление. Запрос больше не имеет файлов в Request.Files. есть ли способ передать их в представление, которое будет храниться во входном теге?

ответ

1

По соображениям безопасности cannot задает значение типа ввода = «файл». Представьте, что вы посещаете вредоносный сайт, который может установить значение и опубликовать форму с javascript, крадущим любой файл на вашем компьютере.

0

Попробуйте сначала сохранить файл в временную область, а затем вызвать Model.IsValid. Получается немного сложнее, но это необходимо, учитывая ваше желание загрузить файл (возможно, с проверенной записью). Пометьте где-нибудь, что вы уже загрузили файл, в скрытом поле или что-то еще, и используйте это, когда Model.Isvalid вернет true, вы можете упаковать файл вместе с новой и действительной записью.

Смежные вопросы