Ввод файла MVC 3 Проверка на стороне клиента для обязательного - PullRequest
7 голосов
/ 12 апреля 2011

Простой вопрос ... Можно ли использовать проверку на стороне клиента MVC 3 на входах типа file?

Для объяснения: MVC 3 использует свою модель проверки с помощью IClientValidatable и ненавязчивого JavaScript, чтобы позволить вам написать проверку на стороне сервера и сделать так, чтобы она выполняла проверку на стороне клиента с помощью проверки jquery с использованием плагинов Microsoft. Чтобы сделать свойство обязательным, вы добавляете атрибут ниже

[Required]
public HttpPostedFileBase CvFile {get; set;}

Пока на стороне клиента включен val и ненавязчивый javascript в конфигурации, все это должно срабатывать на клиенте.

Однако HttpPostedFileBase (т. Е. <input type="file" name="Model.CvFile" />) не будет выполняться на стороне клиента.

Любые идеи о том, как этого достичь, сохраняя связь с проверкой на стороне сервера.

Ответы [ 2 ]

27 голосов
/ 13 июля 2012

Вам нужно добавить его вручную:

<input type="file" data-val="true" data-val-required="please select a file" name="file" />
@Html.ValidationMessage("file")
1 голос
/ 12 апреля 2011

Простой ответ: HttpPostedFileBase отображает тип ввода «файл», который является проблемой безопасности и, AFAIK, не поддерживается сценариями. Там нет поддержки для этого "из коробки".

Редактировать: это, кажется, очень популярная тема в Интернете. http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx

...