Javascript 从ajax检索控制器中的列表
我有以下javascript代码:Javascript 从ajax检索控制器中的列表,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我有以下javascript代码: var formData = new FormData($('#formSlip').get(0)); formData.append('myList', JSON.stringify(tests)); 其中,测试是对象列表。我将向我的控制器发送一个ajax post请求,并在该请求中发送一个文件和一个对象列表 $.ajax({ url: url, type: 'post',
var formData = new FormData($('#formSlip').get(0));
formData.append('myList', JSON.stringify(tests));
其中,测试
是对象列表。我将向我的控制器发送一个ajax post请求,并在该请求中发送一个文件和一个对象列表
$.ajax({
url: url,
type: 'post',
data: formData,
processData: false,
contentType: false,
cache: false,
success://some code
})
我使用Chrome中的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);
}
[HttpPost]
公共操作结果LS10(HttpPostedFileBase firstPdf,列表myList)
{
var t=firstPdf.InputStream;
byte[]pdfByte=新字节[firstPdf.ContentLength];
返回文件(pdfByte,“application/pdf”,firstPdf.FileName);
}
我创建了一个ViewModel以获取该列表:
public class PdfPieceVM
{
public string key { get; set; }
public List<string> listTitles { get; set; }
}
公共类PdfPieceVM
{
公共字符串密钥{get;set;}
公共列表列表标题{get;set;}
}
当我调试代码时,myList
参数总是空的,但是我正在接收文件,我需要做什么来纠正这个问题 在阅读@Alex Menconi引用的帖子时,我将控制器操作更改为检索字符串,然后将其反序列化为我想要的类型:
[HttpPost]
public ActionResult LS10(HttpPostedFileBase firstPdf, string myList)
{
List<PdfPieceVM> pdfPieces = new
JavaScriptSerializer().Deserialize<List<PdfPieceVM>>(myList);
}
[HttpPost]
公共操作结果LS10(HttpPostedFileBase firstPdf,字符串myList)
{
列出pdfPieces=新
JavaScriptSerializer()。反序列化(myList);
}
你看过这篇文章了吗:-看起来需要contentType。