I have this submit code,
$('#form').on('submit',function (e) {
    e.preventDefault();
    //var file = $("#productImg");
    var fileUpload = $("#productImg").get(0);
    var files = fileUpload.files;
    var form = $("#form");
    var formData = new FormData();
    formData.append("product", form.serialize());
    // Looping over all files and add it to FormData object  
    for (var i = 0; i < files.length; i++) {
        formData.append(files[i].name, files[i]);
    }
    //formData.append("file", file);
    $.ajax({
        type: 'POST',
        url: baseUrl + 'Controller/Action',
        data: formData,
        processData: false,
        contentType: false,
        success: function (data) {
        }
    });
});
This is my controller :
  public JsonResult AddProduct(ProductModel product) // data is binded in the model if I remove content type property
    {
        var isSuccess = false;
        if (product != null)
        {
            try
            {
                if (Request.Files.Count > 0) // works ok if I added the content type property
                {
                    var sadas = "sad";
                }
So what's happening here is I sending the serialized form data into mvc controller together with the uploaded file.
The problem here is , when i added this ajax property contentType: false,, I can successfully postback the files, but the binded model is null.
On the other hand, If i remove this property, the binded model works OK. But the problem is the file was not sent in the server.
How can I make this work? I want both the form and images to be sent in server side.
UPDATE This is working now, the only line I changed is this
formData.append("product", form.serialize());
TO
var other_data = $('#addProductForm').serializeArray();
$.each(other_data, function (key, input) {
    formData.append(input.name, input.value);
});
Can someone explain what is happening? I got no clue