ASP.NET Core 2 MVC App“POCO”Model binding not binding
问题描述:
我有一个非常基本的ASP.NET Core 2 Web应用程序(没有剃须刀视图,只是带有json响应的MvcCore)。ASP.NET Core 2 MVC App“POCO”Model binding not binding
我想在Postman和我的控制器做一个非常简单的GET请求操作没有绑定查询字符串参数到我的自定义POCO。
这里是邮递员设法击中样本网址:http://localhost:51459/orders?Query=iphone&MinimumPrice=22
public class OrderQuery
{
public string Query { get; set; }
public decimal? MinimumPrice { get; set; }
public decimal? MaximumPrice { get; set; }
}
[Route("orders")]
public class OrdersController : ControllerBase
{
[HttpGet("")]
public async Task<ActionResult> GetOrdersAsync(OrderQuery query)
{
// query.Query is null.
// all the properties of query are null.
}
}
现在我可以通过方法步骤(即命中断点),所以路由没有得到“发现”和“处理”。
其次,我也尝试在POCO的属性上喷洒[FromQuery]
属性。
最后,我试着改变请求中的情况,但我认为模型标识不区分大小写。
任何人都可以看到我做错了什么?有没有特别的middleware
我应该检查一下,看看我是否连线/没有连线?
答
OMG @我:(
所以在方法签名变量名是query
和(串)查询字符串键也是query
。
query
做
模型结合是越来越有混淆我的意思是OrderQuery
类的财产或试图设置字符串方法实际变量,它不能做
解决方案:??改名为整个签名:public async Task<ActionResult> GetOrdersAsync(OrderQuery orderQuery)
**请注意方法签名变量名称更改**
Doh! :)
TL; DR;不要将POCO变量名称命名为表单/查询字符串/路由键。
尝试'任务 GetOrdersAsync([FromQuery] OrderQuery查询)' –
Nkosi
不 - 也没有工作:( –