WebApi - 读取从jQuery GET传递给对象的GET参数

时间:2013-12-08 18:37:54

标签: jquery json post asp.net-web-api get

使用jquery调用REST服务时,我可以将POJO对象传递给$ .get(...)调用,jquery会将对象的属性序列化为GET QueryString。

我的REST服务是使用WebAPI开发的,我想知道是否可以自动将查询字符串参数反序列化为对象。

更确切地说:

如果我有POST方法,我可以从消息体中反序列化json,如下所示

我有以下jQuery代码

var dataObj // my POJO
j$.post('/api/myserv', dataObj, function (data, status, jqXHR) {
    // ....

WebApi端点

' MyEntity class has same structure as POJO object
Public Function PostValue(<FromBody()> ByVal entity As MyEntity) As HttpResponseMessage 
    ' here I have entity instantiated and setup

使用jquery get时,传递POJO对象:

var dataObj // my POJO
j$.get('/api/myserv', dataObj, function (data, status, jqXHR) {
    // ....

这转换为

GET /api/myserv?prop1=val1&prop2=val2&...

在WebApi中,我想像POST一样实例化一个对象

' MyEntity class hadata from uri, s same structure as POJO object
Public Function GetValue(<FromURI()> ByVal entity As MyEntity) As HttpResponseMessage 
    ' but here the entity is null

为了能够阅读我必须为POJO对象中的每个道具设置一个参数,例如

' MyEntity class hadata from uri, s same structure as POJO object
Public Function GetValue(prop1 As .., prop2 as ..., ) As HttpResponseMessage 

有没有办法能够从一个对象中读取所有参数,因为它是its;它是来自身体的POST?

谢谢

1 个答案:

答案 0 :(得分:3)

您可以在[FromUri]方法参数中的对象前使用WebAPI。在这里查看Parameter Binding

设置你的jquery调用如下:

$.ajax({
    url: url,
    type: 'GET',
    dataType: 'json',
    data: { prop1: 1, prop2: "two" },
    success: function (result) {
        //handle
    }
});