有没有办法将对象作为参数传递给Web API中的Get方法?我有以下情况:
在我的Web.API项目中,Get方法如下所示:
public IEnumerable<ArticleMetaData> GetComponentXMLByDate(ComponentRequest request)
{
// Some logic here
return articleMeta;
}
我的ComponentRequest对象如下所示:
public class ComponentRequest
{
public string startdate { get; set; }
public string enddate { get; set; }
public string pagenumber { get; set; }
public string pagesize { get; set; }
}
我试着这样称呼它:
http://mydomain.com/api/values/?startdate=121922&enddate=063020&pagenumber=2&pagesize=100
在方法中,ComponentRequest请求将变为null。如果我将方法更改为接受多个字符串参数而不是对象,则它可以正常工作。
我在设置中遗漏了什么?
答案 0 :(得分:17)
我认为
public IEnumerable<ArticleMetaData> GetComponentXMLByDate([FromUri]ComponentRequest request)
{
// Some logic here
return articleMeta;
}
应该有用。
Mike Stall在how-webapi-does-parameter-binding
上有一篇很好的文章答案 1 :(得分:8)
您需要使用[FromUri]
属性。
查看以下问题。 ASP.NET MVC Web Api Get Not Mapping QueryString To Strongly Typed Parameter