18

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

我的设置中缺少什么吗?

4

2 回答 2

24

我觉得

public IEnumerable<ArticleMetaData> GetComponentXMLByDate([FromUri]ComponentRequest request)
{
    // Some logic here
    return articleMeta;
}

应该管用。

Mike Stall 有一篇关于webapi-does-parameter-binding的好文章

于 2013-03-22T13:31:08.257 回答
10

您需要使用[FromUri]属性。

看下面的问题。 ASP.NET MVC Web Api 获取未将 QueryString 映射到强类型参数

于 2013-03-22T13:29:58.017 回答