上傳的文件,我有這樣的代碼提交,無法綁定表單數據和控制器
$('#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) {
}
});
});
這是我的控制器:
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";
}
所以這裏發生了什麼是我的serialized form
數據發送到MVC控制器連同上傳的文件。
這裏的問題是,當我添加此ajax屬性contentType: false,
,我可以成功回發文件,但綁定模型爲空。
另一方面,如果我刪除此屬性,綁定模型工作正常。但問題是文件沒有在服務器中發送。
我該如何做這項工作?我希望表單和圖像在服務器端發送。
UPDATE 這是現在的工作,我唯一改變的行都是這樣的
formData.append("product", form.serialize());
TO
var other_data = $('#addProductForm').serializeArray(); $.each(other_data, function (key, input) { formData.append(input.name, input.value); });
有人能解釋發生了什麼事?我不知道
假設fil輸入也在你的form標籤中,那麼你所需要的就是'var formData = new FormData($(「#form」).get(0));' - 參考[this answer](http:// stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681) –
@StephenMuecke謝謝!這可以簡化我的代碼 – Sherlock