Публиковать данные BindProperty по умолчанию на странице Razor с помощью JQuery ajax - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь отправить данные с помощью ajax-запроса на страницу Razor Asp.Net Core 2.1.

$.ajax({
    type: "POST",
    url: "/MyPage",
    data: { "Key1": Val1},
    beforeSend: function (xhr) {
        xhr.setRequestHeader("XSRF-TOKEN",
            $('input:hidden[name="__RequestVerificationToken"]').val());
    },
    contentType: false,
    processData: false,
    success: function (response) {
        if (response == "Success")
            alert("Successfully saved.");
        else {
            alert(response);
        }
    },
    error: function (e) {
        alert(e.responseText);
    }
});

Здесь все работает хорошо.

Теперь я хочу передать примерно 50 значений текстового поля, поэтому вместо использования data: { "Key1": Val1}, Есть ли альтернатива связыванию [BindProperty] class?

Моя PageModel выглядит

[BindProperty]
public InputModel Input { get; set; }

Подробнее о .cshtml

https://jsfiddle.net/4sb8vqda/1/

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете использовать метод сериализации :

$.ajax({
    type: "POST",
    url: "/MyPage",
    headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
    data: $('#theFormId').serialize(),
    success: function (response) {
        if (response == "Success")
            alert("Successfully saved.");
        else {
            alert(response);
        }
    },
    error: function (e) {
        alert(e.responseText);
    }
});

Вы устанавливаете неправильное значение заголовка. Кроме того, не устанавливайте contenttype на false. Это приводит к тому, что contenttype устанавливается на text/plain вместо application/x-www-form-urlencoded; charset=UTF-8, что необходимо для передачи значений формы.

...