我有这个javascript代码:
var formData = new FormData($('#formSlip').get(0));
formData.append('myList', JSON.stringify(tests));
其中tests
是对象列表。我正在向我的控制器发送ajax post请求,并在该请求中发送文件和对象列表。
$.ajax({
url: url,
type: 'post',
data: formData,
processData: false,
contentType: false,
cache: false,
success://some code
})
我在Chrome中使用Request Payload
查看了我的DevTools
,看起来像这样:
Content-Disposition: form-data; name="firstPdf"; filename="blank.pdf"
Content-Type: application/pdf
Content-Disposition: form-data; name="myList"
[{"key":"Section1","listTitles":["aaaa","aa","aa","a"]},
{"key":"Section2","listTitles":["bb","b","bb","b"]}]
我正在我的控制器操作中检索文件,但由于某种原因,列表始终为空,这是我的控制器操作:
[HttpPost]
public ActionResult LS10(HttpPostedFileBase firstPdf, List<PdfPieceVM> myList)
{
var t = firstPdf.InputStream;
byte[] pdfByte = new byte[firstPdf.ContentLength];
return File(pdfByte, "application/pdf", firstPdf.FileName);
}
我创建了一个ViewModel来获取该列表:
public class PdfPieceVM
{
public string key { get; set; }
public List<string> listTitles { get; set; }
}
当我调试我的代码时,myList
参数始终为空,但我收到了该文件,我需要做些什么来纠正这个问题?
答案 0 :(得分:0)
阅读@Alex Menconi引用帖子,我更改了控制器操作以检索字符串,然后将其反序列化为我想要的类型:
[HttpPost]
public ActionResult LS10(HttpPostedFileBase firstPdf, string myList)
{
List<PdfPieceVM> pdfPieces = new
JavaScriptSerializer().Deserialize<List<PdfPieceVM>>(myList);
}