2014-07-17 2 views
1

Я могу успешно загрузить файл (путь, хранящийся в базе данных, и файл перемещен в папку хранения файлов). Однако, если проверка не выполняется для другого поля в представлении и пользователь возвращается на страницу просмотра, на вход файла отображается «No File Chosen».Как загрузить POST-файл после возврата к просмотру с контроллера

В отладке, когда контроллер возвращается к представлению, this.Model.CoverLetter является «System.Web.HttpPostedFileWrapper».

Как сохранить этот файл, чтобы его можно было повторно отправить через POST? Нужно ли мне что-то делать в контроллере, чтобы передать информацию о файле обратно в представление для повторной отправки?

Вид:

<label for="CoverLetter">Cover Letter</label> 
<input type="file" name="CoverLetter" id="CoverLetter" accept=".pdf,.doc,.docx,.txt" /> 
@Html.ValidationMessage("CoverLetter") 

Контроллер:

[HttpPost] 
public ActionResult Create(Applicant application, HttpPostedFileBase CoverLetter) 
{ 
    this.ModelState.AddModelErrors(application.Validate(update: false)); 

    if (this.ModelState.IsValid && application.Create()) 
    { 
      //this stuff works 
    } 
    return View(application); 
} 
+0

сделать проверку на стороне клиента, включен ли jquery uobtrusive validate? –

ответ

1

Вы не можете установить значение входного файла типа программно по соображениям безопасности. Это просто запрещено.

Лучшее, что вы можете сделать, это проверить на стороне клиента, где это возможно, и выполнить проверку ajax для тех вещей, которые необходимо проверить на стороне сервера.

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