MVC Controller получает нулевые значения от ajax - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь отправить сообщение Ajax на контроллер mvc, содержащее два параметра.

Первый параметр: сериализованная модель (папка)

Второй параметр: массив (периоды)

Проблема в том, что контроллер получил нулевые значения в первом параметре:

enter image description here

Код JavaScript:

var data = JSON.stringify({
    Folder: $('#Folder').serialize(),
    Periods: periodsArr
});

function save(data) {
  return $.ajax({
         type: 'POST',
         //cache: false,
         contentType: 'application/json', //Without folder not empty and period is empty
         //traditional: true,
         //dataType: "json",          
         url: '@Url.Action("AddOrEditFolder", "Folder")',
         data: data,
         success: function (result) {
             alert(result);
             location.reload();
         },
        error: function () {
            alert("Error!" + Error);
         }
    });
}

HTML-код:

<div class="card-body">
    @using (Html.BeginForm(null, null, new { @id = string.Empty }, FormMethod.Post, new { @id = "Folder" }))
    {
        @Html.HiddenFor(model => model.FolderID)

        <div class="row">
            <label for="FirstNameAR" class="col-sm-2 control-label">الإسم الشخصي</label>
            <div class="col-sm-4">
                @Html.EditorFor(model => model.Trainee.FirstNameAR, new { htmlAttributes = new { @id= "FirstNameAr", @class = "form-control" } })
            </div>
            <label for="FirstNameFR" class="col-sm-2 control-label">الإسم العائلي</label>
            <div class="col-sm-4">
                @Html.EditorFor(model => model.Trainee.FirstNameFR, new { htmlAttributes = new { @id = "FirstNameFr", @class = "form-control" } })
            </div>
        </div> <br />

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

[HttpPost]
//[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddOrEditFolder(Folder Folder, Period[] Periods)
{
   //Folder Folder = JsonConvert.DeserializeObject<Folder>(Obj);
   using (InternshipsEntities dbContext = new InternshipsEntities())
   {
      //Some code here
   }
}

Как решить эту проблему?

1 Ответ

0 голосов
/ 18 июля 2019

Используйте приведенный ниже код для создания объекта данных для передачи в Ajax запрос.

    var Folder = { };
    $.each($('#Folder').serializeArray(), function() {
        Folder[this.name] = this.value;
    });
    var data = {
        Folder: Folder
        Periods: periodsArr
    };
...