AJAX Функция POST возвращает ошибку еще до того, как она пройдет через метод POST в контроллере - PullRequest
1 голос
/ 05 августа 2020

У меня есть функция AJAX, которая выглядит так

 $.ajax({
    type: "POST",
    url: "@IGT.baseUrl/JODetails/SpecialOrderSelection",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({ allParts: array }),
    dataType: "json",
    traditional: true,
    success: function () {
       alert('Success!');
    },
     error: function () {
       alert('Error! ');
    }
    });

Массив не отправляется моему методу, который выглядит так

public ActionResult SpecialOrderSelection(ItemViewModel model, ItemPartViewModel[] allParts)
{
       
     if (ModelState.IsValid)
     {
        JobOrder jobOrder = db.JobOrders.Find(model.Id);
        if (jobOrder == null)
           {
              return HttpNotFound();
           }
        ViewBag.JobOrderID = jobOrder.ID;
        TempData["model"] = model;
        return RedirectToAction("SpecialOrderSummary", new { id = model.Id });
     }
            
     return View(model);
            
}

Вот мой itemViewModel

 public class ItemViewModel
    {
        [Required]
        public int Id { get; set; }
        [Required]
        public int JobId { get; set; }
        public string ItemId { get; set; }
        public string ItemName { get; set; }
        public string MFGNumber { get; set; }
        public IList<ItemPartViewModel> Parts { get; set; }      
    }

И вот моя модель ItemPartView

 public class ItemPartViewModel
    {
        [Required]
        public int ID { get; set; }
        public int ItemID { get; set; }
        public string PartID { get; set; }
        public string MFGNumber { get; set; }
        public string PartName { get; set; }
        public float QtyInItem { get; set; }
        public float Qty { get; set; }
        public bool MoveAll { get; set; }
        public float OnHand { get; set; }
        public float OnWorkOrder { get; set; }
        public float Committed { get; set; }
        public float FSTK { get; set; }

        // This is the additional property to contain what user picks
        public PartActionType SelectedActionType { get; set; }
    }

allParts возвращается как NULL (я подтвердил массив как данные в нем из журнала консоли), а страница просмотра отвечает Ошибка!" сообщение еще до того, как код будет запущен методом POST.

Почему это?

1 Ответ

0 голосов
/ 06 августа 2020

Почему вы используете метод JSON.stringify()?

Используйте ajax просто отправив исходный объект json.

$.ajax({
    type: "POST",
    url: "@IGT.baseUrl/JODetails/SpecialOrderSelection",
    contentType: "application/json; charset=utf-8",
    data: { allParts: array },
    dataType: "json",
    traditional: true,
    success: function () {
       alert('Success!');
    },
    error: function () {
       alert('Error! ');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...