上传文件并将其转换为json并传递给.net核心webapi控制器时,我收到错误的请求。
这里是一个错误屏幕截图。我也已经控制了模型。
这是我在打字稿中的代码
const httpHeaders = new HttpHeaders({
'Content-Type': 'application/json',
});
var approval = {
...this.MemberApproval,
};
console.log(JSON.stringify(approval));
return this.http.post(this.Url + '/Member/UpdateMember/update', JSON.stringify(approval), { headers: httpHeaders });
在.net核心webapi上,我正在这样做。
我的模特:
public class MemberApproval
{
public string Notes;
public IFormCollection Attachment;
public int ApprovalStatus;
public int SubsId;
public int MemberId;
}
我的控制器:
[Route("[action]/{item}")]
[HttpPost]
public IActionResult UpdateMember([FromBody]MemberApproval approval )
{
if (approval !=null)
{
_repo.UpdateMemberStatus(approval);
}
return Ok();
}
答案 0 :(得分:1)
如果要向ASP.Net Core提交文件,则必须像这样使用FromForm和IFormFile
[HttpPost("SavePost")]
public async Task<IActionResult> SavePost([FromForm]PostViewModel viewModel)
{
var postOptionsViewModel = _jsonParsePostOptionDefaultVm.ToObject(viewModel.PostOptionsViewModel);
viewModel.PostOptionsDefaultViewModel = postOptionsViewModel;
if (viewModel.Id.HasValue)
{
await _postRepository.EditPost(viewModel);
}
else
{
await _postRepository.SavePost(viewModel);
}
return Ok();
}
我的模型将具有属性列表,以便您可以将多个文件提交到服务器
public List<IFormFile> File { get; set; }
我的FE辅助代码将是这样。我使用的是react,但在我们向服务器提交表单数据的方式上几乎没有什么不同
const formdata = new FormData();
formdata.append("Title", this.state.title);
formdata.append("File", this.state.File);
请记住将Content-Type标头设置为“ multipart / form-data”