C# 控制器viewmodel值从我的SPA FETCH POST接收为null
我正在从SPA发回我的Asp.net控制器。控制器具有以下设置:C# 控制器viewmodel值从我的SPA FETCH POST接收为null,c#,typescript,post,asp.net-core-mvc,viewmodel,C#,Typescript,Post,Asp.net Core Mvc,Viewmodel,我正在从SPA发回我的Asp.net控制器。控制器具有以下设置: [HttpPost] [AllowAnonymous] public async Task<IActionResult> Get([FromForm] LoginViewModel model) { 我的SPA是用打字机写的 我的SPA界面是: interface userLogin { Username: string; Password: string; } 我宣布: p
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> Get([FromForm] LoginViewModel model)
{
我的SPA是用打字机写的
我的SPA界面是:
interface userLogin {
Username: string;
Password: string;
}
我宣布:
private login: userLogin,
我的回执结构如下:
// Lets do a fetch!
console.log("username, password: ", this.username, this.password);
this.login.Username = this.username;
this.login.Password = this.password;
console.log("login.username, login.password", this.login);
console.log("JSON login: ", JSON.stringify(this.login));
const task = fetch("/api/jwt", {
method: "POST",
body: JSON.stringify(this.login),
headers: {
"Content-Type": "application/json;charset=UTF-8"
}
注意:在邮递员中设置时,此功能有效
查看这些控制台日志:
username, password: admin password
login.ts:37 login.username, login.password {Username: "admin", Password: "password"}
login.ts:38 JSON login: {Username: "admin", Password: "password"}
以下是Chrome中的网络选项卡,显示有效负载:
最后,控制器在中断时暂停,显示POST的值为null和null:
为什么我在回执栏上会变空?我需要做什么才能使我的API接收这些值?您将contentType显式指定为
application/json
,并发送对象的json字符串化版本。这将在进行异步调用时发送请求体中的数据。因此,您需要使用FromBody
属性,以便框架知道如何从包含json格式的js对象/数据的请求中正确地进行模型绑定
将decorator属性从FromForm
更改为FromBody
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> Get([FromBody] LoginViewModel model)
{
// to do : Return something
}
[HttpPost]
[异名]
公共异步任务Get([FromBody]LoginViewModel模型)
{
//做:归还某物
}
是的,很管用,谢谢。所以我假设每当我向我的api发帖时,我的控制器必须有“FromBody”?
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> Get([FromBody] LoginViewModel model)
{
// to do : Return something
}