Web API将Object传递给Get方法

时间:2013-03-22 13:10:48

标签: asp.net-mvc asp.net-web-api

有没有办法将对象作为参数传递给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。如果我将方法更改为接受多个字符串参数而不是对象,则它可以正常工作。

我在设置中遗漏了什么?

2 个答案:

答案 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