Добрый день / ночь, дорогие SOers,
Я застрял с динамически добавленными загрузками файлов внутри формы в ASP.NET MVC.Я создаю форму с динамически добавленными элементами управления (вставляю строки в таблицу).Одним из них является загрузка файла.Элементы управления добавляются с помощью этой функции jQuery:
$('#addRow').on('click', function () {
var counter = $('.itemRow').length;
$('#itemstable').append('<tr class="itemRow"> <td><select required name="ItemsList[' + counter + '].ProgramNameShort">@foreach (SelectListItem item in ViewBag.VBprograms) { <option value="@item.Value">@item.Text</option>} </select></td>' +
'<td><input type="text" name="ItemsList[' + counter + '].ItemName" /></td>' +
'<td><input type="text" name="ItemsList[' + counter + '].ItemProducer" /></td>' +
'<td><input type="text" name="ItemsList[' + counter + '].ItemQty" /></td>' +
'<td><input type="text" name="ItemsList[' + counter + '].Additional" /></td>' +
'<td><input type="text" name="ItemsList[' + counter + '].Comments" /></td>' +
'<td><input type="file" name="ItemsList[' + counter + '].Image" /></td>' +
'</tr>');
counter++;
});
Мой контроллер получает ViewModel:
[HttpPost]
public ActionResult Create(CallViewModel callViewModel)
ItemsList с изображением как [] byte
свойство является классом внутри класса CallViewModel.Позже объект сохраняется в базе данных (подход БД Первый).Насколько я понимаю, изображения могут быть загружены как объект HttpPostedFileBase (или IEnumerable для нескольких загруженных файлов).Но как я могу обработать загрузку файлов, загруженных в такой список?Я не могу показать весь код, так как он представляет собой многошаговую форму с несколькими вкладками, где таблица является частью одной из вкладок.Если необходимо продемонстрировать какие-либо части кода, я могу обновить текущий вопрос.
Заранее большое спасибо.
UPD Вот соответствующая часть класса CallViewModel:
public class CallViewModel
{
... //properties used in other tabs
public List<ItemClass> ItemsList { get { return _items; } }
private List<ItemClass> _items = new List<ItemClass>();
public class ItemClass
{ //Item
public Guid ItemID { get; set; }
[Required, Display(Name = "Наименование")]
public string ItemName { get; set; }
[Required, Display(Name = "Производитель")]
public string ItemProducer { get; set; }
[Required, Display(Name = "Количество")]
public int ItemQty { get; set; }
[Display(Name = "Комментарии")]
public string Comments { get; set; }
[Required, Display(Name = "Изображение")]
public HttpPostedFileBase Image { get; set; }
[Display(Name = "Дополнительно предоставляемые объекты")]
public string Additional { get; set; }
//Program
//[Required, Display(Name = "Полное название")]
//public string ProgramNameFull { get; set; }
[Required, Display(Name = "Краткое название")]
public string ProgramNameShort { get; set; }
List<Program> Programs { get; set; }
}
}