Domanda

Sto guardando l'esempio dell'uso di hadlebars.js, dove sembra l'elaborazione dei modelli:

 var source   = $("#some-template").html();
 var template = Handlebars.compile(source);
 var data = { users: [
  {username: "alan", firstName: "Alan", lastName: "Johnson", email: "alan@test.com" },
  {username: "allison", firstName: "Allison", lastName: "House", email: "allison@test.com" },
  {username: "ryan", firstName: "Ryan", lastName: "Carson", email: "ryan@test.com" }
]};
$("#content-placeholder").html(template(data));

e il modello è:

  <tbody>
  {{#users}}
    <tr>
      <td>{{username}}</td>
      <td>{{firstName}} {{lastName}}</td>
      <td>{{email}}</td>
    </tr>
  {{/users}}
</tbody>

Ora ho il risultato JSON da ASP.NET MVC e non riesco a pensare al modo in cui dovrei descrivere il mio modello, perché non ha la proprietà "utenti", sembra:

{[{username: "alan", firstName: "Alan", lastName: "Johnson", email: "alan@test.com" }]}

Posso in qualche modo influire su JsonResult per produrre ciò di cui ho bisogno o c'è un modo per correggere il modello senza toccare il codice del controller?

È stato utile?

Soluzione

Nel tuo controller sostituire:

return Json(users);

insieme a:

return Json(new { users = users });

Altri suggerimenti

In alternativa, senza introdurre l'oggetto anonimo con il users Proprietà, puoi cambiare il tuo modello in questo modo:

<tbody>
  {{#each this}}
    <tr>
      <td>{{username}}</td>
      <td>{{firstName}} {{lastName}}</td>
      <td>{{email}}</td>
    </tr>
  {{/each}}
</tbody>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top