Sto lavorando ad un progetto 2.1 Asp.net Core e ho il modello qui sotto
Persona
public class Person
{
[Key]
public int ID { get; set; }
[Required]
[MaxLength(150)]
public string Name { get; set; }
[Required]
[MaxLength(150)]
public string Family { get; set; }
[Required]
public int Age { get; set; }
}
C'è un controller API web nel mio progetto che puoi vederlo.
Controller API Web
[Produces("application/json")]
[Route("api/People")]
public class PeopleController : ControllerBase
{
private readonly ApplicationContext _db;
public PeopleController(ApplicationContext db)
{
_db = db;
}
[HttpGet]
public IEnumerable<Person> GetPerson()
{
return _db.Person;
}
}
Ora voglio ottenere i dati dal mio controller API web e mostrare in index.cshtml
Index.cshtml
<h2>List Person</h2>
<table class="table table-bordered" id="list">
<tr>
<th>ID</th>
<th>Name</th>
<th>Family</th>
<th>Age</th>
</tr>
</table>
<script>
$.getJSON("/api/People", function(res) {
$.each(res, function(key, val) {
alert(val.Age);
var item =
"<tr><td>" +
val.ID +
"</td><td>" +
val.Name +
"</td><td>" +
val.Family +
"</td><td>" +
val.Age +
"</td><td></td></tr>";
$("#list").append(item);
});
});
</script>
Actson effettivo nella scheda di rete nel browser
[{"id":1,"name":"jack","family":"bfd","age":30},{"id":2,"name":"mr john","family":"sobhany","age":36}]
Ma c'è un problema. Tutti i dati vengono visualizzati nella mia vista ma tutti i valori undefined
sono undefined
. Cosa c'è di sbagliato nei miei codici?
Come puoi vedere guardando il JSON, il tuo serializzatore JSON sta convertendo i tuoi nomi con C # come Name
(nota: prima lettera maiuscola) a quelli orientati a JavaScript come name
(nota: prima lettera in minuscolo):
[{"id":1,"name":"jack","family":"bfd","age":30},{"id":2,"name":"mr john","family":"sobhany","age":36}] Note ----^^^^^^
JavaScript è un linguaggio sensibile al maiuscolo / minuscolo, quindi in modo naturale val.Name
undefined
è undefined
quanto undefined
esiste alcuna proprietà Name
su val
; vuoi invece val.name
(e così via per id
, family
, bfd
, age
...).