我一直在撕扯我的头发。我有两个项目,一个是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 datatables
和this 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
draw
JSON
数据是否相同POST
方法输入变量上设置断点,以便在发布后立即捕获该值答案 0 :(得分:0)
将dataType: 'json'
添加到ajax调用
用以下内容替换return data = JSON.stringify(data)
:
return data.Draw = JSON.stringify(data)