【发布时间】:2021-03-19 08:18:55
【问题描述】:
我正在尝试将对象从 ajax 传递到 asp.net 核心
这里是asp代码
[HttpPost]
public async Task<IActionResult> AddOrUpdate([FromForm] LSPost lsPost, List<IFormFile> files)
{
return await Task.Run<IActionResult>(() =>
{
try
{
JsonResult t = ImageUpload(files).Result as JsonResult;
string[] fullFilePathsReturned = t.Value as string[];
lsPost.Media = fullFilePathsReturned[0];
lsPost.Update();
return Ok();
}
catch (Exception ex)
{
return StatusCode(500);
}
});
}
这里是ajax调用
function UploadFile() {
var lsPost = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(new LSPost()));
lsPost.Title = $("#someText").val();
console.log(lsPost);
var fileData = new FormData();
fileData.append("lsPost", lsPost);
fileData.append("files", $("#someRandomID").get(0).files[0]);
$.ajax({
type: "POST",
url: "/LSPostModel/AddOrUpdate",
processData: false,
contentType: false,
data: fileData,
success: function () {
}
});
}
参数“files”通过但“lsPost”没有。我尝试添加/删除[FromForm] / [FromBody] 标签。我尝试将fileData.append 的第一个参数与背面的参数名称匹配。我尝试将 javascript 对象名称与背面的参数名称匹配。没有任何工作....
【问题讨论】:
-
数据是否真的被发布到服务器上?
-
您可能需要将
List<IFormFile> files交换为IFormFile[] files,因为有时 C# 无法反序列化为List。 -
这能回答你的问题吗? Upload files and JSON in ASP.NET Core Web API。我要做的唯一额外更改是
fileData.append("lsPost", JSON.stringify(lsPost))
标签: ajax asp.net-core