这是我的客户请求代码:
import request from 'axios';
//...
let url = 'Login/SignIn',
headers = {
headers: {
'Content-Type': 'application/json'
}
},
data = JSON.stringify( {
name: 'danil',
password: 'pwd'
});
request.post(url, data, headers);
乍一看还不错。
但在我的 Controller 中,一切都是这样结束的:
顺便说一句,这是代码:
[HttpPost]
public async Task<ActionResult> SignIn([FromBody]string name, [FromBody]string password)
{
var userLoginCommand = new UserLogInCommand {
Login = name,
Password = password
};
await _dispatcher.DispatchAsync(userLoginCommand);
return Content(userLoginCommand.Result, "application/json");
}
有什么问题吗?我忘了什么?
我尝试通过添加和删除 JSON.stringify
来玩弄它,尝试不发送 header (然后它抛出 415 错误
)但那里没有任何变化。仍然有空值。
更新:
正如 Ali 在评论中建议的那样,如果我们像这样使用 LoginModel
传递数据就没问题了:
public class LoginModel
{
public string name { get; set; }
public string password { get; set; }
}
但为什么它不能像那样以一种简单的方式工作呢?
最佳答案
只允许从消息正文中读取一个参数。 在您的示例中,您有两个具有 FromBody 属性的参数,这就是您具有空值的原因。
“最多允许从消息正文中读取一个参数。”
关于javascript - 请求 Axios 到 ASP.Net Core Controller 时所有变量均为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755202/