我有一个带有int和复杂对象的MVC控制器
[HttpPost]
public async Task<JsonResult> AddComment(int ticketId, TicketReply ticketReply)
即使我取出对象,似乎也无法传递一个简单的值。这就是AJAX调用的样子
var dataObject = {
ticketId: ticketId //, ticketReply: { Attachements: attachements }
};
$.ajax({
url: $('#updateTicketURL').val(),
data: dataObject, //, //JSON.stringify(dataObject), //JSON.stringify(dataObject),
type: 'POST',
//dataType: 'JSON',
contentType: 'application/json',
success: function (data) {
console.log(data);
}
})
我已经尝试过JSON.stringyfy
等的每种组合,但是我似乎从未获得过价值。即使我将其替换为静态值,也似乎永远无法正常工作。
答案 0 :(得分:1)
您需要一个与正在发送的数据相匹配的对象模型
public class DataObject {
public int ticketId { get; set; }
public TicketReply ticketReply { get; set; }
}
接下来,您将使用[FromBody]
属性更新控制器操作以期望数据,以便模型绑定程序可以创建和填充已发送的数据
[HttpPost]
public async Task<JsonResult> AddComment([FromBody]DataObject dataObject) {
int ticketId = dataObject.ticketId;
TicketReply ticketReply = dataObject.ticketReply;
//...
}
最后,您需要从客户端正确发送数据。
var dataObject = {
ticketId: ticketId ,
ticketReply: { Attachements: attachements }
};
$.ajax({
url: $('#updateTicketURL').val(),
data: JSON.stringify(dataObject),
type: 'POST',
dataType: 'JSON',
contentType: 'application/json',
success: function (data) {
console.log(data);
}
});