在.NET Core 3.1中,使用[FromRoute]
和[FromQuery]
属性对对象进行模型绑定时,如果返回null,可能是由于以下几个原因:
/api/123?name=test
,则id
会正确绑定,但name
不会,因为它不在路由模板中。MyModel
包含Name
属性,请求应为/api?name=value
。/api?Name=value
,而不是/api?name=value
。int
类型,查询字符串中的值也必须是有效的整数。假设我们有一个简单的模型和一个控制器方法:
public class User {
public int Id { get; set; }
public string Name { get; set; }
}
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase {
[HttpGet("{id}")]
public IActionResult GetUser([FromRoute] int id, [FromQuery] User user) {
if (user == null) {
return BadRequest("User data from query string is missing or incorrect.");
}
// 处理逻辑...
return Ok(user);
}
}
正确的请求应该是:
GET /api/users/123?Name=John
通过以上步骤,通常可以定位并解决模型绑定返回null的问题。如果问题依然存在,可能需要进一步检查应用程序的其他部分,如中间件的影响或配置错误。
领取专属 10元无门槛券
手把手带您无忧上云