asp.net core 3 axios не публикуется должным образом - PullRequest
1 голос
/ 27 сентября 2019

На стороне клиента веб-приложения я использую axios для отправки запроса.

Вот мой запрос публикации axios:

                axios({
                    method: 'post',
                    url: '/CorporateRequests/PostRequestProcess',
                    headers: { 'Content-Type': 'application/json' },
                    data: JSON.stringify(this.postingModel)
                }).then(function (response) {
                    if (response.status === 200 && response.data.status === 200) {
                        window.location.href = "/Service/Process";
                    } else {
                        self.$parent.showToast('HATA', 'Kayıt işlemi yapılamadı', 'error');
                    }
                }).catch(function (error) {
                    self.$parent.showToast('HATA', 'Kayıt işlemi yapılamadı', 'error');
                });

и URL-адрес, обрабатывающий запрос отправки сообщения от клиентапримерно так:

Task<JsonResult> PostRequestProcess([FromBody]RequestProcessModel postingModel)

но таким образом на стороне контроллера я получаю нулевое postingModel, но если я изменю RequestProcessModel -> объект , я могу успешно получить значения от клиента, которыйниже приведены значения:

ValueKind = Object :
 "{"requestId":"026e1be4-f32e-42fe-b60b-4916bc572b0c",
 "editMode":false,
 "requestProcessId":null,
 "requestDetail":
 [
     {
        "processDetailId":null,
        "itemId":"df802578-83b5-4b0a-a4c2-08d72a38df96",
        "addBill":true,
        "description":"",
        "itemName":"Kod : KABLO - Adı : KABLO",
        "price":"234"
     },
     {
         "processDetailId":null,
         "itemId":"ca30ddba-be03-4b75-d7e2-08d738fd2efd",
         "addBill":true,
         "description":"",
         "itemName":"Kod : 200 - Adı : üst kapak",
         "price":"2343"
     }
]
         }"

и это мой RequestProcessModel :

public class RequestProcessModel
{
    public RequestProcessModel()
    {
        RequestDetail = new List<RequestProcessDetail>();
    }
    public Guid RequestId { get; set; }
    public bool EditMode { get; set; }
    public Guid? RequestProcessId { get; set; }
    public List<RequestProcessDetail> RequestDetail { get; set; }
}

public class RequestProcessDetail
{
    public Guid? ProcessDetailId { get; set; }
    public Guid ItemId { get; set; }
    public bool AddBill { get; set; }
    public string Description { get; set; }
    public string ItemName { get; set; }
    public decimal Price { get; set; }
}

Я работаю над ASP.Net Core 3, нужна помощь, пожалуйста.

ОБНОВЛЕНИЕ: РЕШЕНО

Проблема в том, что ASP.net core 3 по умолчанию использует свой собственный JSON API, и я думаю, что пока нетготов использовать.Я добавил NewtonsoftJSON в контроллер, и он работал нормально.

services.AddControllers().AddNewtonsoftJson();

1 Ответ

0 голосов
/ 27 сентября 2019

Ваша проблема в том, что вы отправляете строку JSON на свой контроллер

data: JSON.stringify(this.postingModel)

Вы можете изменить свой код следующим образом

axios({
    method: 'post',
    url: '/CorporateRequests/PostRequestProcess',
    headers: { 'Content-Type': 'application/json' },
    data: this.postingModel
}).then(function (response) {
    if (response.status === 200 && response.data.status === 200) {
        window.location.href = "/Service/Process";
    } else {
        self.$parent.showToast('HATA', 'Kayıt işlemi yapılamadı', 'error');
    }
}).catch(function (error) {
    self.$parent.showToast('HATA', 'Kayıt işlemi yapılamadı', 'error');
});

Или вы также можете использовать этот метод

axios.post(url, data, config)
...