无法通过AJAX将值传递给MVC控制器

时间:2018-08-15 22:59:27

标签: c# ajax asp.net-mvc

我有一个带有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等的每种组合,但是我似乎从未获得过价值。即使我将其替换为静态值,也似乎永远无法正常工作。

1 个答案:

答案 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);
    }
});