复杂类型在ApiController参数中为null

我不知道为什么我的参数“ ParametroFiltro Filtro”为空,为什么其他参数“ page”和“ pageSize”都可以。

public class ParametroFiltro

{

public string Codigo { get; set; }

public string Descricao { get; set; }

}

我的ApiController的Get方法:

public PagedDataModel<ParametroDTO> Get(ParametroFiltro Filtro, int page, int pageSize)

我的ajax电话:

var fullUrl = "/api/" + self.Api;

$.ajax({

url: fullUrl,

type: 'GET',

dataType: 'json',

data: { Filtro: { Codigo: '_1', Descricao: 'TESTE' }, page: 1, pageSize: 10 },

success: function (result) {

alert(result.Data.length);

self.Parametros(result.Data);

}

});

回答:

您正在尝试使用GET方法发送复杂的对象。失败的原因是该GET方法不能具有主体,并且所有值都已编码到URL中。您可以使用来完成这项工作[FromUri],但首先您需要更改客户端代码:

$.ajax({

url: fullUrl,

type: 'GET',

dataType: 'json',

data: { Codigo: '_1', Descricao: 'TESTE', page: 1, pageSize: 10 },

success: function (result) {

alert(result.Data.length);

self.Parametros(result.Data);

}

});

[FromUri]如果您这样更改操作方法,则这种方法将能够直接从URL中获取复杂的对象属性:

public PagedDataModel<ParametroDTO> Get([FromUri]ParametroFiltro Filtro, int page, int pageSize)

您以前的方法宁愿使用POST可以具有主体的方法(但是您仍然需要使用JSON.stringify()将主体格式化为JSON的方法)。

以上是 复杂类型在ApiController参数中为null 的全部内容, 来源链接: utcz.com/qa/415582.html

回到顶部