【发布时间】:2020-11-18 06:02:39
【问题描述】:
我有一个在老式 ASP.Net MVC 项目中工作的 JQuery 数据表代码。但是我无法让它在 .Net Core 3.1 中工作。我尝试了几乎所有可能的方法,但在最好的情况下,我从 Ajax 请求的操作方法中获得了 null 输入。我在 Ajax post 方法中记录了数据,它在浏览器控制台中看起来是正确的。
这是我旧项目中有效的操作方法:
public ActionResult GetData()
{
string req = Request.Form[0].ToString();
...
}
这是我的旧项目 Datatables 中有效的 Ajax:
"ajax": {
"type": "POST",
"url": url,
"dataType": "json",
"data": function (d) {
d.searchParam = $('#srcParam').val();
return JSON.stringify(d);
}
我不知道 .Net Core 中的“Request.Form[0]”的等价物,它可以在没有输入参数的情况下捕获数据。在我的新项目中,我使用了相同的 Ajax,但我的操作总是得到空值方法的输入参数。我尝试了许多可能的修复方法,包括以下但没有任何效果:
-在我的操作方法中添加[HttpPost] 属性
-将contentType: "application/json"添加到我的ajax
-使用 ajax type: "GET" 代替。
-在 ajax data: { data: JSON.stringify(@Model.CityId) }, 中命名我的数据,并在我的操作方法中具有与“数据”相同的名称输入参数。
-在我的操作方法输入参数中添加[FromBody] 和[FromForm] 属性。
-尝试在有和没有JSON.stringify的情况下发送数据
此时我迷路了,不知道如何获取这些数据。对于我当前项目中代码的参考当前状态如下:
动作方法
[HttpPost]
public JsonResult GetBusRouteList([FromBody]string data)
{
string req = data;
}
阿贾克斯
"ajax": {
"type": "POST",
"url": url,
"dataType": "json",
"contentType": "application/json",
"data" : { data: JSON.stringify(@Model.CityId) }
}
【问题讨论】:
标签: jquery ajax asp.net-core datatables asp.net-core-3.1