Как привязать загруженные файлы к свойству IEnumerable <HttpPostedFileBase> - PullRequest
1 голос
/ 19 февраля 2010

Это HTML-форма:

<input id="picture1" name="Input_Pictures" type="file" value="" />
<input id="picture2" name="Input_Pictures" type="file" value="" />
<input id="picture3" name="Input_Pictures" type="file" value="" />

Я тоже пробовал:

<input id="picture1" name="Input_Pictures[]" type="file" value="" />
<input id="picture2" name="Input_Pictures[]" type="file" value="" />
<input id="picture3" name="Input_Pictures[]" type="file" value="" />

а также тоже:

<input id="picture1" name="Input_Pictures[0]" type="file" value="" />
<input id="picture2" name="Input_Pictures[1]" type="file" value="" />
<input id="picture3" name="Input_Pictures[2]" type="file" value="" />

Это мой вид модели:

public class PicturesInputViewModel
{
     public IEnumerable<HttpPostedFileBase> Pictures { get; set; }
}

И это действие отправки:

[HttpPost]
public ActionResult Submit(PicturesInputViewModel input)      
{

Я могу просмотреть файлы в коллекции Request.Files, но Pictures всегда равен нулю.

Как я могу решить эту проблему связывания?

<Ч />

Пока я успешно использую этот код:

 var pics = new List<HttpPostedFileBase>();
 foreach (string name in Request.Files)
 {
     var file = Request.Files[name];
         if (file.ContentLength > 0)
             pics.Add(file);        
 }
 input.Pictures = pics;

Ответы [ 2 ]

0 голосов
/ 19 февраля 2010

Попробуйте дать вашим элементам управления разные имена: Picture[1], Picture[2], .. , Picture[n]. Binder не может решить, что picture2 должен быть в коллекции Pictures.

Извините, у MVC нет связывателя для коллекций файлов. Вы можете использовать FileCollectionModelBinder из MvcFutures проекта. Все, что вам нужно сделать, это сослаться на сборку MVCFutures и добавить дополнительный механизм связывания модели (в global.asax.cs или в другом месте):

FileCollectionModelBinder.RegisterBinder(ModelBinders.Binders); 
0 голосов
/ 19 февраля 2010

Проверьте это сообщение Возникли проблемы с вызовом метода сообщения контроллера ...

Это может дать вам подсказку, как решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...