将请求中的对象传递给WebAPI 2

时间:2015-07-22 21:19:14

标签: angularjs asp.net-web-api2

在服务器

上,selectedLocation始终为null

我正在使用Angular,将对象传递给get方法的正确方法是什么

这是在Server上定义的Class,它在get request

中作为参数传递
public class Location
{
   public string LocationName { get; set; }
   public string MFGName { get; set; }
}

这是正在调用的WebAPI中的方法。

    [HttpGet]
    [ActionName("RenewToken")]
    [AllowAnonymous]
    [ResponseType(typeof(string))]
    public async Task<IHttpActionResult> RenewToken(Location selectedlocation)
    { 

    }

捕获的请求看起来像这样(在Google Chrome开发人员工具中)

http://localhost:58146/api/Account/RenewToken?selectedlocation=%7B%22LocationName%22:%22Guad%22,%22MFGName%22:%22Flex%22%7D

我做错了什么?

1 个答案:

答案 0 :(得分:1)

好的,我从这里得到的

Why do we have to specify FromBody and FromUri in ASP.NET Web-API?

当方法的参数是复杂类型时,在请求的主体中查找

因为您正在使用GET,所以数据会被放入uri而不是正文

你可以做的几个选择

public async Task<IHttpActionResult> RenewToken(string LocationName, string MFGName)
{ 

}

您可以随时将动词更改为帖子或接受身体数据的内容

你可以尝试将你的角色改为

$http({
    method: "GET",
    url: "/api/Account/RenewToken",
    params: {
        LocationName: "Guad",
        MFGName: "Flex"
    }
})

将参数化数据