繁体   English   中英

如何将ASP.NET Web API属性路由与复杂对象参数一起使用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM