ฉันมีแอปพลิเคชัน ASP.NET MVC 5 และฉันกำลังพยายามส่งคำขอ POST พร้อมข้อมูล Model และรวมไฟล์ที่ผู้ใช้เลือกด้วย นี่คือ ViewModel ของฉัน (ย่อให้ง่ายขึ้นเพื่อความชัดเจน):
public class Model
{
public string Text { get; set; }
public long Id { get; set; }
}
นี่คือการกระทำของคอนโทรลเลอร์:
[HttpPost]
public ActionResult UploadFile(long userId, Model model)
{
foreach (string file in Request.Files)
{
// process files
}
return View("Index");
}
องค์ประกอบอินพุต Html:
<div>
<input type="file" name="UploadFile" id="txtUploadFile" />
</div>
และโค้ด JavaScript:
$('#txtUploadFile').on('change', function (e) {
var data = new FormData();
for (var x = 0; x < files.length; x++) {
data.append("file" + x, files[x]);
}
data.append("userId", 1);
data.append("model", JSON.stringify({ Text: 'test text', Id: 3 }));
$.ajax({
type: "POST",
url: '/Home/UploadFile',
contentType: false,
processData: false,
data: data,
success: function (result) { },
error: function (xhr, status, p3, p4) { }
});
});
ปัญหาคือเมื่อคำขอไปถึงการกระทำของคอนโทรลเลอร์ ฉันมีไฟล์และ 'userId' ที่เติมข้อมูล แต่พารามิเตอร์ 'model' จะเป็นโมฆะเสมอ ฉันทำอะไรผิดเมื่อเติมวัตถุ FormData หรือไม่
data.append("model", JSON.stringify({ Text: 'test text', Id: 3 }));
ควรเป็นdata.append(Text, 'test text'); data.append(Id, 3);
- person   schedule 27.09.2015