Подтвердить что ты не робот

Как добавить весь набор моделей в formdata и получить его в MVC

Как передать весь объект модели объекта через formdata и преобразовать его в тип модели в контроллере?

Ниже я пробовал!

Часть JavaScript:

model = {
             EventFromDate: fromDate,
             EventToDate: toDate,
             ImageUrl: imgUrl,
             HotNewsDesc: $("#txthtDescription").val().trim(),
        };
formdata.append("model",model);

затем передайте его через AJAX, это будет строка, и если я проверю значение Request.Form["model"], результат будет таким же, то есть он будет принят как строка, а значение будет "[object object]"

Есть ли способ передать модель через formdata и получить ее в контроллере?

4b9b3361

Ответ 1

Если ваше представление основано на модели, и вы создали элементы управления внутри тегов <form>, вы можете сериализовать модель на FormData, используя

var formdata = new FormData($('form').get(0));

Это также будет включать в себя любые файлы, сгенерированные с помощью <input type="file" name="myImage" .../>

и верните его с помощью

$.ajax({
  url: '@Url.Action("YourActionName", "YourControllerName")',
  type: 'POST',
  data: formdata,
  processData: false,
  contentType: false,         
});

и в вашем контроллере

[HttpPost]
public ActionResult YourActionName(YourModelType model)
{
}

или (если ваша модель не включает свойство для HttpPostedFileBase)

[HttpPost]
public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage)
{
}

Если вы хотите добавить дополнительную информацию, которая не находится в форме, вы можете добавить ее, используя

formdata.append('someProperty', 'SomeValue');

Ответ 2

Если вы хотите отправить данные формы с помощью Ajax. Это способ отправки

var formData = new FormData();

//File Upload
   var totalFiles = document.getElementById("Iupload").files.length;


for (var i = 0; i < totalFiles; i++) {
    var file = document.getElementById("Iupload").files[i];

    formData.append("Document", file);
}

formData.append("NameCode", $('#SelecterID').val());
formData.append("AirLineCode", $('#SelecterID').val());


$.ajax({
        url: "/Controller/ActionName",
        type: "POST",
        dataType: "JSON",
        data: formData,
        contentType: false,
        processData: false,
        success: function (result) {
    }
})

Ответ 3

С точки зрения стороны, если вы используете AJAX, то

$('#button_Id').on('click', function(){
        var Datas=JSON.stringify($('form').serialize());
        $.ajax({
            type: "POST",
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            url: '@Url.Action("ActionName","ControllerName")',
            data:Datas,
            cache: false,
            dataType: 'JSON',
            async: true,
            success: function (data) {

            },
        });
    });

На стороне контроллера

 [HttpPost]
 public ActionResult ActionName(ModelName modelObj)
 {
 //Some code here
 }