I am trying to pass array of objects from my view to controller but i am not succeeding in it. Uploaded file is successfully passed from view to controller but array doesn't.
My java script code is like below:
$("#Btn_ConfirmUpload").click(function (e) {
e.preventDefault();
debugger;
var formData = new FormData();
var uploadeddocument = [];
var deptid = $("#Drp_DepartmentId").find('option:selected').val();
var doctypeid = $("#Drp_DocumentTypeVal").find('option:selected').val();
var doctypename = $("#DocumentTypeText").val();
var jobid = $("#Txt_JobId").val();
var files = $("#DocumentUploader").get(0).files[0];
uploadeddocument.push({
JobId: jobid,
Department: deptid,
DocumentType: doctypename,
DocTypeId: doctypeid,
});
formData.append('UploadedDocument', JSON.stringify(uploadeddocument));
formData.append('DocumentUploader', files);
$.ajax({
url: '@Url.Action("UploadDocument", "Job")',
type: 'POST',
dataType: 'json',
data: formData,
processData: false,
contentType: false,
success: function (data) {
}
});
});
My controller code is this:
[HttpPost]
public ActionResult UploadDocument(JobModel data)
{
return View();
}
My model is this:
public class JobModel
{
public List<JobDTO> listofallJobs { get; set; }
public List<TaskDTO> listofallTask { get; set; }
public TaskDTO[] taskdetail { get; set; }
public Dictionary<int?, string> tasktypeandaction { get; set; }
public SelectList DepartmentList { get; set; }
public DocumentLatestDTO[] DocumentDetails { get; set; }
public List<DocumentLatestDTO> ListOfDocuments { get; set; }
public SelectList DocumentTypeList { get; set; }
public DocumentLatestDTO[] UploadedDocument { get; set; }
public HttpPostedFileBase[] DocumentUploader { get; set; }
}
Please help. Thanks in advance.