c# - Ajax 调用发布 0 或 null
问题描述
无法弄清楚这个简单的ajax调用。控制器按原样成功返回 json 文件,但将两个零记录为国家和金额的值,这是不正确的。我在这里做错了什么?
控制器:
[HttpPost("search")]
public IActionResult test(int country, int amount)
{
System.Console.WriteLine(country);
System.Console.WriteLine(amount);
return Json("success : true");
}
jQuery:
var data = "{ 'country': 2, 'amount': 4}";
$.ajax({
url: "search",
type: "POST",
data: data,
cache: false,
contentType: "application/json",
success: function (data) {
alert("hi"+ data);
}
});
解决方案
创建一个模型来保存所需的值
public class TestModel {
public int country { get; set; }
public decimal amount { get; set; }
}
[FromBody]
使用属性更新操作以期望请求正文中的数据
[HttpPost("search")]
public IActionResult test([FromBody]TestModel model) {
if(ModelState.IsValid) {
var country = model.country;
var amount = model.amount;
System.Console.WriteLine(country);
System.Console.WriteLine(amount);
return Ok( new { success = true });
}
return BadRequest(ModelState);
}
客户端您需要确保数据以正确的格式发送
var data = { country: 2, amount: 4.02 };
$.ajax({
url: "search",
type: "POST",
dataType: 'json',
data: JSON.stringify(data),
cache: false,
contentType: "application/json",
success: function (data) {
alert("hi"+ data);
}
});
ASP.NET Core 中的参考模型绑定
推荐阅读
- kubernetes - 用于 EKS 部署的跨账户 CodePipeline
- java - 启用 GL2.GL_LINE_STIPPLE 翻转我的台词
- r - 当我从 Shiny 的条件面板中取消选择主复选框输入时,如何自动取消选择复选框输入
- sql - 如何通过 bigQuery 从谷歌分析中有效地获取价格和 ID
- php - 当用户进入 /login 页面时,Laravel 7.30 重定向到仪表板面板
- python - 如何修复:ProgrammingErrorsAlreadyExists'django_content_type'
- python - NoneClass 类型作为函数的乘积
- socket.io - 每个租户的动态命名空间的 Socket.IO“多租户”
- javascript - 缩放时间 d3.js 中 x 轴上的标签
- npm - LHCI - 这个版本的 Chrome 太旧了