2015-12-29 2 views
2

У меня есть мнение, что имеет следующий входной файл:входной файл пуст, но пустой «файл» отображается в Request.Files

<input type="file" name="SchemaFiles" id="SchemaFiles" class="form-control" multiple/> 

Моя модель имеет этот атрибут:

public List<HttpPostedFileBase> SchemaFiles { get; set; } 

Когда Я выбираю один или два файла для этого ввода, все работает нормально. Однако, если я не выберу никаких файлов и не отправлю форму, то SchemaFiles.Count будет 1, а SchemaFiles[0] - null (но есть). ModelState.IsValid - true.

Есть ли способ избежать этого?

+0

Не добавлять тег неродственных языков! – Olaf

+0

Этот код в модели C#. Я предполагаю, что это скорее вопрос asp.net-mvc (отмеченный тегами). Это действительно оправдывает ниспровержение? – Dave

+0

И вы добавили тег C - почему? – Olaf

ответ

1

Это по дизайну и выглядит как первопричина браузера. Смотрите эти ссылки для справки:

+0

Я посмотрю, есть ли в браузерах отчет об ошибке или объяснение. – Dave

+0

Я думаю, что большинство браузеров сделают это так, вероятно, устаревшие причины, которые будут просто придерживаться. Я хочу сказать, что данные, поступающие через HTTP, имеют пустое имя файла, когда не выбраны никакие файлы (по крайней мере, согласно этим сообщениям), и правильный способ решить это - отфильтровать его в коде сервера. В общем, вы всегда должны не доверять данным, поступающим из браузера, всегда проверяйте и отфильтровывайте недопустимые данные. – Haukman

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