wil*_*ill 51 c# ajax json asp.net-web-api
我不知道为什么我的参数"ParametroFiltro Filtro"变为空,其他参数"page"和"pageSize"正常.
public class ParametroFiltro
{
public string Codigo { get; set; }
public string Descricao { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的ApiController获取方法:
public PagedDataModel<ParametroDTO> Get(ParametroFiltro Filtro, int page, int pageSize)
Run Code Online (Sandbox Code Playgroud)
我的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);
}
});
Run Code Online (Sandbox Code Playgroud)
tpe*_*zek 81
您正在尝试使用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);
}
});
Run Code Online (Sandbox Code Playgroud)
[FromUri]
如果您更改动作方法,这种方式将能够直接从URL中获取您的复杂对象属性:
public PagedDataModel<ParametroDTO> Get([FromUri]ParametroFiltro Filtro, int page, int pageSize)
Run Code Online (Sandbox Code Playgroud)
你以前的方法宁愿使用POST
可以有一个主体的方法(但是你仍然需要使用JSON.stringify()
将主体格式化为JSON).
contentType
进行ajax调用时提供属性.使用JSON.stringify
方法构建要发布的JSON数据.将类型更改为POST
,MVC模型绑定将发布的数据绑定到您的类对象.
var filter = { "Filtro": { "Codigo": "_1", "Descricao": "TESTE" },
"page": "1", "pageSize": "10" };
$.ajax({
url: fullUrl,
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify(filter),
success: function (result) {
alert(result.Data.length);
self.Parametros(result.Data);
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47513 次 |
最近记录: |