Web API字符串参数和POST值
Web API string parameters and POST values
我使用jQuery插件,jTable。该插件有以下函数来加载表:
$('#PersonTable').jtable('load', { CityId: 2, Name: 'Halil' });
load函数中的值作为POST数据发送。该插件还通过URL发送两个查询字符串参数(jtStartIndex, jtPageSize)用于分页表。
文档中的一个示例展示了如何在ASP中处理此问题的函数。. NET MVC但不支持Web API示例:
[HttpPost]
public JsonResult StudentListByFiter(string name = "", int cityId = 0, int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
{
try
{
//Get data from database
var studentCount = _repository.StudentRepository.GetStudentCountByFilter(name, cityId);
var students = _repository.StudentRepository.GetStudentsByFilter(name, cityId, jtStartIndex, jtPageSize, jtSorting);
//Return result to jTable
return Json(new { Result = "OK", Records = students, TotalRecordCount = studentCount });
}
catch (Exception ex)
{
return Json(new { Result = "ERROR", Message = ex.Message });
}
}
我的函数目前看起来如何:它工作得很好,除了我不能设法读取POST数据(name param):
public dynamic ProductsList(string name = "", int jtStartIndex = 0, int jtPageSize = 0 )
{
try
{
int count = db.Products.Count();
var products = from a in db.Products where a.ProductName.Contains(name) select a;
List<Product> prods = products.OrderBy(x => x.ProductID).ToList();
return (new { Result = "OK", Records = prods, TotalRecordCount = count });
}
catch (Exception ex)
{
return (new { Result = "ERROR", Message = ex.Message });
}
}
My jTable load:(当用户在input中输入文本时调用)
$('#ProductTable').jtable('load', {
name: $('#prodFilter').val()
});
我将感谢任何帮助如何读取URL中的字符串参数和Web API函数中的POST数据。
编辑:
我使用了另一种方式将数据发送到API。我没有使用格式化为JSON的加载函数发送它,而是使用了listAction的函数,并通过URL发送数据(详细信息请参阅jTable API参考):
listAction: function (postData, jtParams) {
return $.Deferred(function ($dfd) {
$.ajax({
url: 'http://localhost:53756/api/Product/ProductsList?jtStartIndex=' + jtParams.jtStartIndex + '&jtPageSize=' + jtParams.jtPageSize + '&name=' + $('#prodFilter').val(),
type: 'POST',
dataType: 'json',
data: postData,
success: function (data) {
$dfd.resolve(data);
},
error: function () {
$dfd.reject();
}
});
});
}
根据过滤的结果重新加载表:
$('#ProductTable').jtable('load');
而不是:
$('#ProductTable').jtable('load', {
name: $('#prodFilter').val()
});
尝试将[FromBody]
属性应用于name参数
public dynamic GetProductList([FromBody]string name = "", int jtStartIndex = 0, jtPageSize = 0)
{
...
}
Web API中的默认绑定器将在URI中查找简单类型,如字符串,指定FromBody属性将强制它在body中查找。
相关文章:
- 如何在ajax文件上传中添加额外的POST参数
- 通过发送POST参数在ExtJS 4中显示PDF
- 当按下浏览器后退按钮时,如何用相同的post参数激发ajax请求
- 在转发到代理目标并将响应发送回客户端之前,编辑POST参数
- 在提交时更改HTML Post参数
- Javascript没有在Firefox中发送post参数
- 在触发特定 POST 请求时修改 HTTP POST 请求正文(post 参数)
- Jquery .load() 每次页面加载只发送一次 POST 参数
- 在 PHP 中提取 JQuery POST 参数
- jQuery .load() 停止使用 POST 参数
- JayData.OData v.3操作POST参数接收为空
- 使用ajax的Yii2中的Route和Post参数
- AJAX调用中缺少POST参数会导致PHP脚本中出现未定义的索引警告
- 如何为XHR POST参数设置动态URL
- 下载一个由javascript生成POST参数的主页
- 你如何拦截xhr POST参数/POST正文
- 如何根据Node.js中的post参数之一为所有请求设置时区
- 在Jtable(Jquery)中删除操作时,csrf令牌设置为post参数
- Post参数不是通过ajax请求发送到PHP的
- 获取POST参数不工作