И вот альтернативный подход, предполагающий, что вам необходимо поддерживать оба значения [FromForm]
и [FromBody]
в вашем API контроллера ...
Front-End (угловой код):
forgotPassword(forgotPassword: ForgotPassword): Observable<number> {
const params = new URLSearchParams();
Object.keys(forgotPassword).forEach(key => params.append(key, forgotPassword[key]));
return this.httpClient.post(`${this.apiAuthUrl}/account/forgotpassword`, params.toString(), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } });
}
Back-End (код C #):
[AllowAnonymous]
[HttpPost("[action]")]
public async Task<IActionResult> ForgotPassword(ForgotPasswordViewModel model) { }
Теперь ваша подпись может оставаться неизменной, поэтому она может поддерживать оба.
И еще одинпостоянный подход, о котором я думал при обращении.
https://benfoster.io/blog/aspnet-core-customising-model-binding-conventions.
Надеюсь, это кому-нибудь поможет!