Как исправить вызов Ajax "Словарь параметров содержит пустую запись ........." - PullRequest
1 голос
/ 16 мая 2019

Я пытаюсь отправить свои данные через ajax-вызов в контроллер, но я проверяю весь мой код, отлаживаю его, все значения заполнены, но он постоянно показывает эту ошибку.событие также показывает мне вызов MVC как хорошо

Словарь параметров содержит пустую запись для параметра ' BrandId ' ненулевого типа 'System.Int32' для метода 'System.Web.Mvc.ActionResult Forms(System.Collections.Generic.IEnumerable1 [System.Web.HttpPostedFileBase], System.String, Int32, Int32, Boolean, Int32) 'in' AdminDevVersion.Controllers.HomeController'`.Необязательный параметр должен быть ссылочным типом, обнуляемым типом или быть объявлен как необязательный параметр.Имя параметра: параметры

Я уже отладил код и проверил, все ли значения заполнены.

Мой Ajax-код

function uploadSubmitHandler() {
  var PName = $("#ProductName").val();
  var Category = $("#CategoryDropDown").val();
  var Brand = $("#BrandDropDown").val();
  var SubCategory = $("#SubCategory").val();

  var ProductDescription = $('textarea.textarea-editor').val();
  var NewOROldRadio = $("input[name='ProductStatus']:checked").val();
  if (state.fileBatch.length !== 0) {
    var data = new FormData();
    for (var i = 0; i < state.fileBatch.length; i++) {
      data.append('files', state.fileBatch[i].file, state.fileBatch[i].fileName);
    }

    data.append('ProductName', PName);
    data.append('CategoryId', Category);
    data.append('BrandId', Brand);
    data.append('IsNewStatus', NewOROldRadio);
    data.append('SubCategoryId', SubCategory);
    data.append('Description', ProductDescription);

    $.ajax({
      type: 'POST',
      url: options.ajaxUrl,
      data: data,
      cache: false,
      contentType: false,
      processData: false
    });

  }
}

Код контроллера

[HttpPost]
public ActionResult Forms(IEnumerable<HttpPostedFileBase> files, String ProductName, int CategoryId, int BrandId, bool IsNewStatus, int SubCategoryId)
{
    List<string> FileNames = new List<string>();
    string ImageName = null;
    TblProduct InsertProduct = new TblProduct();
    if (ModelState.IsValid == true)
    {
        InsertProduct.Name = ProductName;
        InsertProduct.IsActive = IsNewStatus;
        InsertProduct.BrdId = BrandId;
        InsertProduct.CatId = SubCategoryId;
        InsertProduct.Image = ImageName;
        InsertProduct.Created = DateTime.Now;
        InsertProduct.IsActive = true;
        _RepoProduct.Insert(InsertProduct);
        _RepoProduct.Save();
        TblProRelImg RelatedImages = new TblProRelImg();
        foreach (HttpPostedFileBase file in files)
        {
            string _path = System.IO.Path.Combine(Server.MapPath("~/Content/Images/"), file.FileName);
            file.SaveAs(_path);
            if (file == files.First())
            {
                ImageName = file.FileName.ToString();
            }
            else
            {
                RelatedImages.PrdID = InsertProduct.ID;
                RelatedImages.Image = file.FileName;
                _ReporRelatedImages.Insert(RelatedImages);
                _ReporRelatedImages.Save();

            }
            FileNames.Add(file.FileName);
        }
        ViewBag.CategoryId = Logics.Category();
        ViewBag.BrandInfo = new SelectList(DbContext.TblBrands, "Id", "Name");
    }
    return View();
}

Я ожидал отправить данные на контроллер

1 Ответ

1 голос
/ 16 мая 2019

парсит ваш BrandId как int и добавляет к вашим данным

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