In my angular code I'm passing form to API. I use Ng2FileUploader. During setting options I added additionalParameter:
addSubject() {
if (this.subjectCreationForm.valid) {
this.uploader.setOptions({url: this.baseUrl + 'Subject/AddNewSubject', additionalParameter: {
userId: this.authService.decodedToken.nameid,
subject: {name: "test", description: "test"}
}})
this.uploader.uploadAllFiles(null);
}
}
In my API (C#, .NET Core 3.1) I can get userId, but subject is not recognized.
This is SubjectDto in API:
public class SubjectDto
{
public int Id { get; set; }
public int Price { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
And controller:
[HttpPost]
[Route("AddNewSubject")]
public async Task<IActionResult> AddNewSubject([FromForm]AddNewSubjectCommand command)
{
if (command.UserId != User.FindFirst(ClaimTypes.NameIdentifier).Value)
return Unauthorized();
return Ok(await CommandAsync(command));
}
Command model:
public class AddNewSubjectCommand : IRequest<Unit>
{
public string UserId { get; set; }
public SubjectDto Subject { get; set; }
public ICollection<IFormFile> Files { get; set; }
}
Result now:
Is it possible to pass complex object like subject and map it to SubjectDto when passing FromForm?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…