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

Passing Object in get Request to WebAPI 2

服务器上的 selectedLocation 始终为 null

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

这是在服务器上定义的Class,它作为get请求中的参数传递

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

我做错了什么?

好的,从我从这里得到的东西来看

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

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

由于您使用的是 GET,因此数据会被放入 uri 而不是 body

您可以做的几个选项是

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

}

你总是可以将你的动词更改为 post 或接受正文中数据的东西

您可以尝试将 angular 中的 get 更改为

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

这将参数化数据