How to append whole set of model to formdata and obtain it in MVC How to append whole set of model to formdata and obtain it in MVC ajax ajax

How to append whole set of model to formdata and obtain it in MVC


If your view is based on a model and you have generated the controls inside <form> tags, then you can serialize the model to FormData using

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

This will also include any files generated with <input type="file" name="myImage" .../>

and post it back using

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

and in your controller

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

or (if your model does not include a property for HttpPostedFileBase)

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

If you want to add additional information that is not in the form, then you can append it using

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


If you want to send Form data using Ajax.This is the way to send

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) {    }})


Using Pure Javascript, considering you have

<form id="FileUploadForm">   <input id="textInput" type="text" />  <input id="fileInput" type="file" name="fileInput" multiple>  <input type="submit" value="Upload file" /></form>

JS

document.getElementById('FileUploadForm').onsubmit = function () {var formdata = new FormData(); //FormData objectvar fileInput = document.getElementById('fileInput');//Iterating through each files selected in fileInputfor (i = 0; i < fileInput.files.length; i++) {    //Appending each file to FormData object    formdata.append(fileInput.files[i].name, fileInput.files[i]);}//text valueformdata.append("textvalue",document.getElementById("textInput").value);//Creating an XMLHttpRequest and sendingvar xhr = new XMLHttpRequest();xhr.open('POST', '/Home/UploadFiles');xhr.send(formdata); // sexhr.onreadystatechange = function () {    if (xhr.readyState == 4 && xhr.status == 200) {        //on success alert response        alert(xhr.responseText);    }  }  return false;}  

in your C# controller you can get values it as below

[HttpPost]public ActionResult UploadFiles(YourModelType model, HttpPostedFileBase fileInput){      //save data in db}

Reference : File Uploading using jQuery Ajax or Javascript in MVC