这是我的控制器
[HttpPost]
public bool Sync(int? id, string name)
{
throw new NotImplementedException();
}
这是我正在尝试对此控制器进行的ajax请求调用:
<script type="text/javascript">
var buttonClicked = document.getElementById("syncLegacy");
buttonClicked.addEventListener('click', function () { syncLegacyMake(); }, false);
function syncLegacyMake() {
$.ajax({
url: '/Legacy/Sync',
type: 'POST',
data: JSON.stringify({
id: $("#Id").val(),
name: $("#Name").val()
}),
contentType: 'application/json; charset=utf-8',
success: function (data) {
},
error: function () {
alert("error");
}
});
}
控制器被命中,但参数没有值。值均为空。
当我在chrome控制台上查看调用本身时,会在标题中的Request Payload下填充这些值:
{id:“01”,姓名:“泰坦”} ID : “01” 名称 : “泰坦”
有谁可以指出我在这里做错了什么?我能够在.net 4.6.1框架中做同样的事情,所以不确定框架是否已经改变了?
答案 0 :(得分:0)
你有没有尝试过以下的事情:
public class SyncDto
{
public int? Id {get;set;}
public string Name {get;set;}
}
// Controller action:
[HttpPost]
public bool Sync(SyncDto input)
{
throw new NotImplementedException();
}
让jquery想出你自己的ajax调用:
$.ajax({
url: '/Legacy/Sync',
type: 'POST',
data: {
id: $("#Id").val(),
name: $("#Name").val()
}
});