#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);
, а затем проверить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
});
}