Я пытаюсь передать элемент ввода методу OnPost в моем проекте Razor Pages, но метод никогда не используется.
это моя форма
<p style = "text-align: left; font-size: 12px;">Podstawowe dane</p>
<p><input type = "text" class = "form-control" placeholder = "Imię" name = "name" /></p>
<p> <input type = "text" class = "form-control" placeholder = "Nazwisko" name = "surname" /></p>
<p><input type = "text" class = "form-control" placeholder = "Telefon" name = "mobile" /></p>
<button type = "submit" class = "" style = "" asp-page-handler = "UpdatePersonalData">Dalej</button>
<input id = "btnWork" type = "submit" value = "Work" onclick = "writeLog(name,surname,mobile);" />
Это моя функция:
<script>
function writeLog(name, surname, mobile) {
fetch(`?handler=UpdatePersonalData&name=${name}&surname=${surname}&mobile=${mobile}`);
}
</script>
Это моя модельная функция:
}
public async Task<IActionResult> OnPostUpdatePersonalData(string name, string surname, string mobile)
{
var user = await UserManager.GetUserAsync(User);
_AccountModel.UserId = user.Id;
_AccountModel.Mail = user.Email;
await _accountRepository.UpdatePersonalData(_AccountModel, name, surname, mobile);
return RedirectToPage("/Account/DataForm/CompanyData");
}
Если поможете буду признателен
##ОБНОВИТЬ
После разговора с пользователем в stackoverflow
это целое
Сначала я думал, что могу сделать несколько почтовых запросов, например, со статической формой, но, насколько я вижу, мне нужно обновить его сразу.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


fetch по умолчанию отправляет запрос GET, вам нужно настроить его для отправки POST. Вам также необходимо передать токен защиты от подделки.
Попробуй это:
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Antiforgery
@{
var requestToken = Antiforgery.GetAndStoreTokens(HttpContext).RequestToken;
}
<p style = "text-align: left; font-size: 12px;">Podstawowe dane</p>
<p><input id = "name" type = "text" class = "form-control" placeholder = "Imię" name = "name" /></p>
<p><input id = "surname" type = "text" class = "form-control" placeholder = "Nazwisko" name = "surname" /></p>
<p><input id = "mobile" type = "text" class = "form-control" placeholder = "Telefon" name = "mobile" /></p>
<input id = "btnWork" type = "submit" value = "Work" onclick = "writeLog()" />
<input id = "RequestVerificationToken" type = "hidden" value = "@requestToken" />
@section Scripts {
<script>
function writeLog() {
const name = document.getElementById('name').value;
const surname = document.getElementById('surname').value;
const mobile = document.getElementById('mobile').value;
const url = `?handler=UpdatePersonalData&name=${name}&surname=${surname}&mobile=${mobile}`;
fetch(url, {
method: 'POST',
headers: {
RequestVerificationToken:
document.getElementById('RequestVerificationToken').value
}
});
}
</script>
}
OnPostUpdatePersonalData будет обработан только запросом POST.
Как я могу передвигаться с этим? Просто хочу передать данные из JS в функцию модели
Вы пробовали код, который я написал выше?
Да, именно поэтому я отправляю вам строку с «localhost», чтобы вы могли видеть, что она получает значения из ввода, но функция модели не отвечает.. :/
Посмотрите здесь: pastebin.com/hFp8V72m ЭТО РАБОТАЕТ, НО Я ПЕРЕДАЮ ЗНАЧЕНИЯ СТАТИЧЕСКИ. Я хочу передать значение пользовательского ввода.
Давайте продолжим обсуждение в чате.
Вы можете попробовать использовать следующий код, при нажатии кнопки «Работа» функция js writeLog() вызовет обработчик OnPostUpdatePersonalData:
вид (нажатие <input type = "button"/> не отправит форму):
<form method = "post" id = "myForm">
<p style = "text-align: left; font-size: 12px;">Podstawowe dane</p>
<p><input type = "text" class = "form-control" placeholder = "Imię" name = "name" /></p>
<p> <input type = "text" class = "form-control" placeholder = "Nazwisko" name = "surname" /></p>
<p><input type = "text" class = "form-control" placeholder = "Telefon" name = "mobile" /></p>
<button type = "submit" class = "" style = "" asp-page-handler = "UpdatePersonalData">Dalej</button>
<input id = "btnWork" type = "button" value = "Work" onclick = "writeLog()" />
</form>
js:
function writeLog() {
$.ajax({
type: "POST",
url: "?handler=UpdatePersonalData",
data: $("#myForm").serialize(),
headers: { "RequestVerificationToken": $('input[name = "__RequestVerificationToken"]').val() },
success: function(data) {
}
});
}
результат:
Привет! Эта работа. Но... Это 5-шаговая форма, и после того, как я поместил что-то в другую <form>, моя 5-шаговая форма сломалась..:/ Нужно ли мне перестраивать всю форму, чтобы поместить все переменные из 2-х шагов в 1 запрос?