[英]ASP.NET Web Api 2 - Attribute Based Routing - How do I force a parameter to query string only?
[英]How do I use ASP.NET Web API Attribute Routing with a complex object parameter?
我有一个Web API操作,如下所示:
[HttpGet]
[Route("api/query/hello/{query}")]
public HttpResponseMessage Hello([FromUri]Query query)
{
return null;
}
其中Query类具有名为QueryText
的公共字符串属性。 当我点击以下网址时,收到404错误:
/api/query/hello?QueryText=bacon
这在我开始使用属性路由之前有效。 如果我没有参数或基本类型参数,我可以使属性路由工作。 但是对于复杂的参数,我得到404s。 属性路由如何使用复杂的操作参数? 它与FromUri
属性兼容吗?
这里的解决方案是路由定义中的{query}
标记是多余的。 删除它,如下,修复了问题:
[Route("api/query/hello")]
由于您正在从URL中读取,因此需要[FromUri]属性。 您的路线应该类似于:
public HttpResponseMessage Hello([FromUri]Query query)
{
//Implement whatever
return null;
}
/ api / {Controller Name} / hello?QueryText = bacon
应该正常工作。
模型绑定器将获取您提供的任何查询参数,然后尝试绑定Query
对象内的任何内容。 在你首先工作后我会担心路线属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.