Я пытаюсь отправить данные из внешнего интерфейса React в метод .NET Core Web API.Я размещаю сообщения с помощью fetch()
метода javascript.Когда я устанавливаю точку останова в .NET-коде для анализа значений viewModel, все его члены равны нулю.
Я также попытался передать простую строку вместо модели представления, но это также пусто.
Я попытался добавить атрибут [FromBody]
перед параметром.
ContactForm.js
onSubmit(e) {
e.preventDefault();
let data = {
viewModel: {
name: this.state.name,
serviceRequested: this.state.interest,
email: this.state.email,
phone: this.state.phone,
contactPreference: this.state.preference
}
};
fetch('api/Contact/Contact', {
method: "POST",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => {
response.text().then(function (text) {
alert(text);
});
});
}
ContactController.cs
private readonly string successMessage = "success";
private readonly string modelStateMessage = "Invalid input.";
[HttpPost("[action]")]
public ActionResult Contact(ContactFormViewModel viewModel)
{
if (ModelState.IsValid)
{
}
else
{
return Content(modelStateMessage);
}
return Content(successMessage);
}
ContactFormViewModel.cs
public class ContactFormViewModel {
[Required]
public string Name {get;set;}
public string ServiceRequested {get; set;}
[DataType(DataType.EmailAddress)]
public string Email {get;set;}
[DataType(DataType.PhoneNumber)]
public string Phone {get;set;}
public string ContactPreference {get;set;}
[StringLength(1000)]
public string Message {get;set;}
}
Я ожидаю, что данные будут заполнять свойства моделей представления, но все они равны нулю.Инструменты разработчика Firefox показывают, что Запрос передает JSON-параметры в теле.