在 ASP.NET Core 3 中,可以使用 [FromQuery]、[FromRoute]、[FromBody] 等属性来绑定参数。对于带有连字符的名称,可以使用 [FromQuery(Name = "param-name")]、[FromRoute(Name = "param-name")]、[FromBody(Name = "param-name")] 来指定参数的名称。
以下是一个示例代码,演示了如何在 ASP.NET Core 3 中处理带有连字符的名称的参数:
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpGet]
public IActionResult Get([FromQuery(Name = "user-id")] int userId)
{
// 处理逻辑
return Ok($"User ID: {userId}");
}
[HttpPost]
public IActionResult Post([FromBody(Name = "user-name")] string userName)
{
// 处理逻辑
return Ok($"User Name: {userName}");
}
}
在上述代码中,Get 方法使用了 [FromQuery(Name = "user-id")] 来指定参数名称为 "user-id",这样就可以正确地绑定查询参数中的 "user-id" 到 userId 参数。同样地,Post 方法使用了 [FromBody(Name = "user-name")] 来指定参数名称为 "user-name",这样就可以正确地从请求体中绑定 "user-name" 属性到 userName 参数。
通过使用 [FromQuery(Name = "param-name")]、[FromRoute(Name = "param-name")]、[FromBody(Name = "param-name")] 等属性,可以解决带有连字符的名称在路由或绑定参数中的问题。