C# 模型绑定在aspnet核心web api中不起作用
我正在从事ASP.NETCore2.1WebAPI项目。我试着跟随这篇文章:但我被困在行动中。我的模型类不会绑定到输入C# 模型绑定在aspnet核心web api中不起作用,c#,asp.net-core,asp.net-web-api,C#,Asp.net Core,Asp.net Web Api,我正在从事ASP.NETCore2.1WebAPI项目。我试着跟随这篇文章:但我被困在行动中。我的模型类不会绑定到输入 [AllowAnonymous] [HttpPost] public IActionResult Login([FromBody] LoginVM loginVM) { IActionResult response = Unauthorized(); // cant reach this point, my breakpoint is here var user
[AllowAnonymous]
[HttpPost]
public IActionResult Login([FromBody] LoginVM loginVM)
{
IActionResult response = Unauthorized(); // cant reach this point, my breakpoint is here
var user = AuthenticateUser(new UserModel { });
if (user != null)
{
var tokenString = GenerateJSONWebToken(user);
response = Ok(new { token = tokenString });
}
return response;
}
public class LoginVM
{
public string Username { get; set; }
public string Password { get; set; }
}
在Body中选择“raw”,在postman中选择“Content Type”作为“application/json”,然后重试。您发布的是
x-www-form-urlencoded
,但是您将[FromBody]
属性应用于操作参数。这两件事根本不相容。要接受x-www-form-urlencoded
(或multipart/form data
),必须将[FromForm]
属性应用于参数。如果您现在使用的是[FromBody]
,那么您只能接受类似application/json
或application/xml
(如果您还启用了xml序列化程序)
如果问题是您希望能够同时接受
application/json
和x-www-form-urlencoded
请求主体,那么这是不可能的。对于每个请求体编码,您需要一个单独的操作,尽管您可以将操作的实际内容分解到控制器上的一个私有方法中,这两个操作都可以使用。那么//一些代码中有什么内容呢?你确定不是给了你这个错误吗?@DavidG我无法到达方法第一行的断点。你也可以添加你的主类声明吗?我假设您已经复制了[路由(“api/[控制器]”)
和[ApiController]
too@Sasha是的,我这样做了,但是我通过在类的构造函数中放置断点进行了检查,该点是可到达的,因此我认为在这里路由是可以的。使用[FromForm]
。欢迎来到StackOverflow。见问题所附的评论。试着更清楚地解释为什么这是问题的答案。