Базовые значения AJAX POST отправляются в контроллер без значения - PullRequest
0 голосов
/ 07 декабря 2018

Я знаю, что это вопрос, который регулярно задают везде на форумах dev, но, несмотря на поиск, я не могу найти то, что застряло.

Я просто пытаюсь передать некоторые значения через Ajax POST длямой контроллерAjax получает значения, но они приходят нулевыми в моем контроллере.

Я попытался объявить модель с такими же именами переменных, а также попытался поместить каждое поле в сигнатуру моего метода (с теми же именами переменных), норезультат всегда один и тот же: null.

Возможно ли, что это не сработает, потому что модель моего представления отличается от модели, с которой я хочу получать свои данные?

Будет лиу вас есть представление о том, что застряло и, в частности, из-за чего?

Thx!

Контроллер V1

[Authorize]
[HttpPost]
public async Task<ActionResult> ShowRegistration(Models.RegisterForm rF)
{

КонтроллерV2

    [Authorize]
    [HttpPost]
    public async Task<ActionResult> ShowRegistration(string Id, string Status, string Checkin, string Checkout, string Cost, bool Terms, bool Info, string Member_Zkp)
    {
        return View();
    }

Модель

public class RegisterForm
{
    public string Id { get; set; }
    public string Status { get; set; }
    public string Checkin { get; set; }
    public string Checkout { get; set; }
    public string Cost { get; set; }
    public bool Terms { get; set; }
    public int TermsINT { get; set; }
    public int InfoINT { get; set; }
    public bool Info { get; set; }
    public string Member_Zkp { get; set; }
}

Функция Ajax

function Edit() {

    event.preventDefault();
    var id = $('#Zkp').val();
    var status = $('#StatusDrop').val();
    var cost = $('#Cost').val();
    var checkin = $('#Checkin').val();
    var checkout = $('#Checkout').val();
    var check1 = $('#check1').val();
    var check2 = $('#check2').val();
    var dataRegister = { "Id": id, "Status": status, "Cost": cost, "Terms": check1, "Info": check2 };

    $('html, body').animate({ scrollTop: 0 }, 'fast');
    $('#alertWait').show('fade');
    setTimeout(function () {
        $('#alertWait').hide('fade');
    }, 4000);

    $.ajax({
        url: "https://localhost:44338/Registration/ShowRegistration/",
        data: { "Id" : id, "Status": status, "Cost": cost, "Terms": check1, "Info": check2 },
        type: 'POST',

        contentType: 'application/JSON',
        success: function (data) {
            if (data === "success") {
                $('html, body').animate({ scrollTop: 0 }, 'fast');
                $('#alertOk').show('fade');

                setTimeout(function () {
                    $('#alertOk').hide('fade');
                }, 4000);
            }
        },
        error: function () {
            $('html, body').animate({ scrollTop: 0 }, 'fast');
            $('#alertError').show('fade');
            setTimeout(function () {
                $('#alertError').hide('fade');
            }, 4000);
        }
    });
}

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Прежде всего

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

data: { Id : id, Status: status, Cost: cost, Terms: check1, Info: check2 }

А затем,

Попробуйте скрыть эту строку изваш вызов ajax.

contentType: 'application/JSON',
0 голосов
/ 07 декабря 2018

Сериализуйте ваш объект в json перед отправкой:

data: JSON.stringify({ "Id": id, "Status": status, "Cost": cost, "Terms": check1, "Info": check2 }),

вы также можете получить модель вместо объявления переменных x

public async Task<ActionResult> Index(RegisterForm model)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...