gpt4 book ai didi

c# - 复杂类型在 ApiController 参数中为空

转载 作者:IT老高 更新时间:2023-10-28 12:45:31 26 4
gpt4 key购买 nike

我不知道为什么我的参数“ParametroFiltro Filtro”为空,而其他参数“page”和“pageSize”却正常。

public class ParametroFiltro
{
public string Codigo { get; set; }
public string Descricao { get; set; }
}

我的 ApiController 获取方法:

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) .

关于c# - 复杂类型在 ApiController 参数中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com