C # MVC отправить объект через JQuery AJAX - PullRequest
0 голосов
/ 30 мая 2018

, несмотря на то, что я копался в stackoverflow и большом количестве документации, я застрял на этом: я не могу отправить объект через jquery ajax в приложение ac # mvc.Всегда значения атрибутов заказа, который я возвращаю в контроллере, кажутся пустыми.

Спасибо за любую помощь!

JAVASCRIPT

function Order()
{
    this.Partner;
    this.OrderID;
    this.TypeOfOrder;
    this.SubmittedBy;
    this.CompanyID;
    this.CompanyName;
}

jQuery('button[type="submit"]').click(function (event) {
    event.preventDefault();

    var order = new Order();
    order.Partner = "ABC",
    order.OrderID = "123";
    order.TypeOfOrder = "Website";

    console.log(order);

    jQuery.ajax({
        url: "/my-route",
        type: "POST",
        dataType: 'json',
        contentType: "application/json",
        data: order,
        success: function (data) {
            console.log(data);
        },
        failure: function (response) {
            console.log("ERROR!");
        }
    });
})

*Модель 1010 * C #

public class Order
{
    public string Partner { get; set; }
    public string OrderID { get; set; }
    public string TypeOfOrder { get; set; }
    public string SubmittedBy { get; set; }
    public string CompanyID { get; set; }
    public string CompanyName { get; set; }
}

Контроллер C #

// POST my-route
[HttpPost]
public Order Post(Order order)
{
    return order;
}

КОНСОЛЬ

enter image description here

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

Просто удалите тип контента в вызове ajax.Это будет выглядеть следующим образом.

jQuery.ajax({
    url: "/my-route",
    type: "POST",
    dataType: 'json',
    data: order,
    success: function (data) {
        console.log(data);
    },
    failure: function (response) {
        console.log("ERROR!");
    }
});

ajax по умолчанию установит тип контента.

0 голосов
/ 01 марта 2019
  • Просто удалите dataType и contentType из кода, как указано ниже.
  • URL должен быть " / ControllerName / MethodName ". Я проверил его в моей системе симя контроллера и его работоспособность.

    jQuery.ajax({ url: "/controllerName/methodName", type: "POST", data: order, success: function (data) { console.log(data); }, failure: function (response) { console.log("ERROR!"); } });

0 голосов
/ 30 мая 2018

Вам необходимо изменить сигнатуру вашего метода, чтобы она включала [FromBody]

, поэтому: Public Order Post ([FromBody] Order order)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...