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
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…