WebApi复杂对象返回null

时间:2015-10-06 17:11:22

标签: c# asp.net-web-api

我有一个ASPNET WebApi 2项目,在控制器中我有两个动作

 public IHttpActionResult Get([FromUri] Company company)
 {
    //code
 }

和另一个:

[HttpGet]
[Route("api/company/quantity")]
public IHttpActionResult Count([FromUri] Company company)
{
      //code
}

公司类:

  public class Company 
  {
    public Company()
    { 
       Name = "";
       //Set default value to all properties
    }
    public string Name {get;set;}
    //othger string properties
  }

如果我使用此uri访问第一种方法获取 // localhost / api / company / 一切正常,{ {1}}对象以默认值实例化。

但是,如果我尝试使用此uri访问第二种方法Count: // localhost / api / company / quantity ,方法会被点击但是{{1} object为null。

怎么了?

2 个答案:

答案 0 :(得分:1)

您需要更改第二种方法的路由属性,并将公司放入括号中。

[HttpGet]
[Route("api/{company}/quantity")]
public IHttpActionResult Count([FromUri] Company company)
{
    //code
}

但是,您是否尝试通过URL传递复杂对象?你可以更好地切换到POST / PUT方法并从请求体绑定对象。

答案 1 :(得分:0)

你不能使用httpget传递类似类的复杂对象,发送方式是将动词更改为post或put并将对象发送到http请求的主体