ajax - asp.net核心中的ajax POST int参数
问题描述
我正在将我的 MVC 项目迁移到 Core,我一直很难修复所有旧的 ajax 调用。
我可以将模型和字符串参数传递给控制器,但是,整数对我不起作用。
我可以将它们作为字符串参数包装到 JSON 对象中,例如[FromBody]string objId
在控制器中,但是我必须从 Json 解析 int val {'objId' : 1}
。
有没有办法可以避免这种情况并只传递一个int?
下面是我正在尝试的代码。
[HttpPost]
public JsonResult PassIntFromView([FromBody]int objId)
{
//DO stuff with int here
}
这是js。
var data = { "objId": 1};
$.ajax({
url: '@Url.Action("PassIntFromView", "ControllerName")',
data: JSON.stringify(data),
type: "POST",
dataType: 'JSON',
contentType: "application/json",
success: function(data) {
//do stuff with json result
},
error: function(passParams) {
console.log("Error is " + passParams);
}
});
在objId
控制器中始终为 0。
我试过这个但没有做JSON.stringify(data)
也没有结果。
我还尝试了所有不同的表单属性变体。
解决方案
尝试使用 contentType 作为'application/x-www-form-urlencoded'
:
var data = { objId: 1 };
$.ajax({
url: '@Url.Action("PassIntFromView", "ControllerName")',
type: "post",
contentType: 'application/x-www-form-urlencoded',
data: data,
success: function (result) {
console.log(result);
}
});
然后删除[FromBody]
控制器中的属性
[HttpPost]
public JsonResult PassIntFromView(int objId)
{
//Do stuff with int here
}
推荐阅读
- php - 创建一个查询,检查数量是否在数量范围之间,并在 laravel 中使用 jquery 从产品 ID 输出一定数量的基础
- php - 如何按字母顺序对转发器字段进行排序?ACF
- oracle - 无法为 hr 表创建 localhost 连接
- javascript - 如何将 mongdb 字段传递给动态表单元素
- php - 从存储库加载可重用数据的最简洁方法是什么?
- tensorflow - 用于 LSTM 输入的 Keras 掩蔽层以掩蔽特征而不是时间步长
- javascript - 我想使用 for 循环重复一个函数,但 for 循环什么也不做
- qemu - 这个 .dtb 文件中指定的内存部分有多长?
- javascript - SpeechRecognition:循环遍历一组问题;在问下一个问题之前等待每个“口头”回答
- c++ - 如何传递求解器工作空间大小