Ajax сериализованная форма со значениями, которые не передаются корректно действию моего контроллера - PullRequest
0 голосов
/ 25 февраля 2020

Я установил предупреждение javascript, чтобы подтвердить, что мой form.serialize работает правильно, и это так. Проблема в том, что мое действие контроллера не связывает какие-либо данные из формы с моделью.

Javascript оповещение с переданными значениями формы

Первое значение в этом оповещении StartDate со значением 02/25/2020, но на скриншоте контроллер под ним не привязан к значению StartDate объекта dailyReport.

alert

Снимок экрана контроллера и переданного объекта

VS screenshot

Ajax

$(function () {
    $('#submit').on('click', function (evt) {
        alert($('#reportForm').serialize());
        evt.preventDefault();
        //Ajax form post
        $.ajax({
            type: 'POST',
            data: $('#reportForm').serialize(),
            url: '@Url.Action("Daily","Reports")',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                if (data.success) {
                    alert("Data Success");
                } else {
                    console.log(data);
                    //Toggle the error modal and display error messages
                    $('#errorsModal').modal('toggle');
                    //Add <br> tags when there is a linebreak in the string.  This will add the line breaks into the HTML.
                    $('#errorsModal .modal-body p').html(data.message.replace(/(?:\r\n|\r|\n)/g, '<br>'));
                }
            }
        });
    });
});

Контроллер

[HttpPost]
public IActionResult Daily(Daily dailyReport)
{
    var dr = new ReportDaily();
    var rc = new ReportDailyCriteria();
    dr.Preview(rc, IntPtr.Zero, out Notification notification);
    if (notification.HasErrors)
    {
        return Json(new
        {
            success = false,
            message = notification.GetConcatenatedErrorMessage(Environment.NewLine + Environment.NewLine)
        });
    }

    return Json(new { success = true });
}

1 Ответ

0 голосов
/ 26 февраля 2020

Переключение с использования 'application/json; charset=utf-8' на 'application/x-www-form-urlencoded; charset=utf-8' fixed the issue.

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