Ошибка 500 в ajax post. Ajax отсылает null data
Код частичного представления:
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<h1>Registration</h1>
<form id="loginform">
<input type="number" name="Id" value="0" id="ID"/><br />
<p>Имя</p>
<input type="text" name="Name" id="Name" /><br />
<p>Ник</p>
<input type="text" name="NickName" id="NickName" /><br />
<p>Возраст</p>
<input type="number" name="Age" id="Age" /><br />
<p>Почта</p>
<input type="text" name="Email" id="Email" /><br />
<p>Пароль</p>
<input type="text" name="Password" id="Password" /><br />
<input type="submit" value="отправить" id="Submit" />
</form>
<script>
$(document).ready(function () {
$("#Submit").click(function (e) {
e.preventDefault();
var person = {
Id: $("#ID").val(),
Name: $("#Name").val(),
Age: $("#Age").val(),
NickName: $("#NickName").val(),
Email: $("#Email").val(),
Password: $("#Password").val(),
}
$.ajax({
url: "/api/Test",
type: "POST",
data: JSON.stringify(person),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function () {
console.log("SUCCESS")
},
error: function (xhr, status, error) {
console.log(xhr.responseText + '|\n' + status + '|\n' + error);
}
})
});
});
</script>
Код контроллера api
[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase
{
Context db;
public TestController(Context context)
{
db = context;
}
[HttpPost]
public async Task<IActionResult> Registration([FromForm]User user)
{
if (ModelState.IsValid)
{
db.Users.Add(user);
await db.SaveChangesAsync();
return Ok(user);
}
return BadRequest(ModelState);
}
}
Простая модель пользователя:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string NickName { get; set; }
public string Email { get; set; }
public int Age { get; set; }
public string Password { get; set; }
}
Сам объект отправляется в контроллер, но все свойства = null (Id и Age = 0). Пробовал отсылать информацию разными способами. Но всегда выдает ошибку 500. Если убрать атрибут [FromForm], то выдает ошибку 400. Можно было бы обойтись без атрибутов [FromForm] и [FromBody]? Видел много рабочих примеров без них