【发布时间】:2021-06-11 01:43:00
【问题描述】:
我有这个查询对象:
public class GetRecipeQuery: IRequest<RecipeResponse>
{
[BindRequired]
[FromRoute]
public int Id {get; set;}
}
和控制器:
[ApiController]
[Route("[controller]")]
public class RecipeController
{
private AppDbContext _context;
private readonly IMediator _mediator;
public RecipeController(AppDbContext context, IMediator mediator)
{
_context = context;
_mediator = mediator;
}
[HttpGet("{Id}")]
// http://localhost:5555/Recipe/555
public RecipeResponse Get([FromRoute]GetRecipeQuery query)
{
if (query.Id == 0)
{
throw new ArgumentException("No Id!", nameof(query.Id));
}
var result = _mediator.Send(query).Result;
return result;
}
}
所以我看到了这个结果:
Status: 400
"The value '{Id}' is not valid for Id."
需要帮助:如何将 Id 从路由绑定到 GetRecipeQuery.Id ?
否则我需要在每个控制器方法中手动构造查询对象。
【问题讨论】:
-
您好@nvff,欢迎来到 Stackoverflow。我认为您需要指定类型
[HttpGet("{Id:int}")]? -
我测试了你的代码,它工作正常,但是
RecipeResponse是什么? -
@Karney,RecipeResponse 是返回数据类。 {id,错误}
标签: c# asp.net-core asp.net-web-api .net-core