Как передать HttpPostedFileBase из JavaScript в качестве модели вместо данных формы

#javascript #asp.net-mvc-4

Вопрос:

Можно ли передать данные формы без использования FormData с помощью модели JavaScript. Поскольку в моей форме много элементов управления, я хотел бы использовать подход модели вместо FormData.

Есть ли способ передать выбранные файлы контроллеру без использования HttpPostedFileBase? У меня есть почти 10 различных классов, которые принимают HttpPostedFileBase

У меня есть следующий класс в c#

 public class ArtGallery{
   Public string GallerName {get;set;}
   Public HttpPostedFileBase[] Documents {get;set;}
}
 

Эквивалентной моделью JavaScript является

 class ArtGallery{
     GallerName;
     Documents[];
}
 

На моем сохранении формы вот как я это делаю

 function saveFormData(){
  let gallery = new ArtGallery();
  gallery.GallerName = "Test";
  $.each($("input[type=file]"), function (i, obj) {
        $.each(obj.files, function (j, file) {
            gallery.Documents.push(file);
        });
   });
   saveToDb();
}

function saveToDb() {
    let url = "/MyController/PostData/";
    $.ajax({
        url: url,
        type: 'POST',
        async: false,
        data: '{gallery : '   JSON.stringify(gallery)   '}',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (result) {
        },
        error: function (request) {
        }
    });
}
 

Мой контроллер выглядит следующим образом, который запускается, но документы, которые я не могу получить

 [HttpPost]
public JsonResult PostUserData(ArtGallery gallery) {

}
 

Комментарии:

1. Как выглядит ваша модель документа? что вы видите, когда пишете JSON.stringify(console.gallery.Documents)

2. @Разработчик Он показывает пустой 🙁

3. тогда возникает некоторая проблема со строкой документов