ASP.NET 5 Controller方法无法接收JSON POST,ASP.NET 4控制器方法确实

时间:2016-01-25 05:08:51

标签: datatables asp.net-core asp.net-core-mvc

我一直在撕扯我的头发。我有两个项目,一个是ASP.NET 4,另一个是ASP.NET 5 RC1

ASP.NET 5项目控制器收到的POST方法输入参数都是默认值,而不是从网页发送的值。

为了缩小问题范围,我简化了两个项目中的控制器POST方法

[HttpPost]
public JsonResult DataHandler(int Draw)
{
    //above Draw variable not set
}

并在方法上设置一个断点来捕获变量Draw。该网页发送Draw参数的值为1的JSON帖子。但是在ASP.NET 5中,值为0(默认值),而我发送的其他参数为null而不是值。在'ASP.NET 4'中它是正确的。

我正在使用jquery datatablesthis ASP.NET 4项目中使用的相同代码

var oTable = $('#datatab').DataTable({
    "serverSide": true,
    "ajax": {
        "type": "POST",
        "url": '/Home/DataHandler',
        "contentType": 'application/json; charset=utf-8',
        'data': function (data) { return data = JSON.stringify(data); }
    },
    "dom": 'frtiS',
    "scrollY": 500,
    "scrollX": true,
    "scrollCollapse": true,
    "scroller": {
        loadingIndicator: false
    },
    "processing": true,
    "paging": true,
    "deferRender": true,
    "columns": [
   { "data": "Name" },
   { "data": "City" },
   { "data": "Postal" },
   { "data": "Email" },
   { "data": "Company" },
   { "data": "Account" },
   { "data": "CreditCard" }
    ],
    "order": [0, "asc"]
});

我使用Fiddler并将两个项目发送的JSON与控制器进行比较,发布到JSON的{​​{1}}内容两者完全相同,即/Home/DataHandler 1}}。

  

{ “画”:1, “列”:[{ “数据”: “姓名”, “姓名”: “”, “搜索”:真 “订购”:真, “搜索”:{“值“:””, “正则表达式”:假}},{ “数据”: “城”, “名”: “”, “搜索”:真实的, “订购”:真实的, “搜索”:{ “值”: “”, “正则表达式”:假}},{ “数据”: “邮政”, “名”: “”, “搜索”:真实的, “订购”:真实的, “搜索”:{ “值”: “” “正则表达式”:假}},{ “数据”: “电子邮件”, “名”: “”, “搜索”:真实的, “订购”:真实的, “搜索”:{ “值”: “”,”正则表达式 “:假}},{” 数据 “:” 本公司”, “名”: “”, “搜索”:真实的, “订购”:真实的, “搜索”:{ “值”: “”, “正则表达式” :假}},{ “数据”: “帐号”, “姓名”: “”, “搜索”:真实的, “订购”:真实的, “搜索”:{ “值”: “”, “正则表达式”:假的}},{ “数据”: “信用卡式”, “名”: “”, “搜索”:真实的, “订购”:真实的, “搜索”:{ “值”: “”, “正则表达式”:假}} ], “命令”:[{ “塔”:0, “DIR”: “ASC”}], “启动”:0, “长度”:126, “搜索”:{ “值”: “”,“正则表达式“:假}}

我尝试过的事情。

  • 我在项目之间使用了相同的Draw=1内容和上面的代码html table文件
  • 将我的控制器输入参数设置为小写,例如.js
  • 比较fiddler中的draw JSON数据是否相同
  • POST方法输入变量上设置断点,以便在发布后立即捕获该值

1 个答案:

答案 0 :(得分:0)

dataType: 'json'添加到a​​jax调用

用以下内容替换return data = JSON.stringify(data)

return data.Draw = JSON.stringify(data)