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

#javascript #.net #asp.net-mvc

Вопрос:

В настоящее время я не уверен, как использовать вызов fetch post для передачи объекта методу, ожидающему этот объект. Я создал полезную нагрузку и передал ее, но, похоже, она не работает. Я установил точку останова в коде, но она так и не была достигнута. Не уверен, почему вызов выборки не работает. Какие-либо предложения о том, как не достигается конечная точка?

Это мой метод в C#.

     [HttpPost]
    [Route("ResetPassword")]
    private void ResetPassword(Player player){

   {
 

Язык JavaScript:

 const continueBtn = document.getElementById("continueBtn");
continueBtn.onclick = () => {
const email = document.getElementById("lblEmail").innerHTML;
sendResetEmail(email);
}

async function sendResetEmail(email) {
const payload = {
    email: email
}

const data = new FormData();
data.append("json", JSON.stringify(payload));

let sendResetEmail = await fetch(`/ResetPassword`,
    {
        method: 'POST',
        body: data
    });
}
 

Комментарии:

1. Вам нужно будет протестировать json переменную POST и расшифровать ее, если это будет сделано подобным образом. Возможно , вы действительно хотите избавиться payload и сделать что-то подобное const data = new FormData; data.append('email', email); , а затем проверить email , и у вас есть то, что вы хотите.

2. Вы смешиваете кодировку JSON и кодировку формы. Просто установите body JSON.stringify(payload) и установите заголовок типа содержимого в «приложение/json»

Ответ №1:

если вы не хотите указывать имя параметра в своем клиенте, вам необходимо указать атрибут [FromBody] в своем API:

 [HttpPost]
[Route("ResetPassword")]
private void ResetPassword([FromBody] Player player){
}
 

Затем на клиенте существует несколько способов, но наиболее распространенным/современным является использование кодировки JSON:

 const payload = {
    email: email
}

const data = JSON.stringify(payload);

let sendResetEmail = await fetch(`/ResetPassword`,
    {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: data
    });
}