ASP.NET MVC JsonResult и руль, без сцепления? - PullRequest
2 голосов
/ 23 января 2012

Я смотрю на пример использования hadlebars.js, где обработка шаблона выглядит следующим образом:

 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));

и шаблон:

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

Теперь у меня есть результат JSON из ASP.NET MVC, и я не могу придумать, как мне следует описать мой шаблон, потому что у него нет свойства «users», это выглядит так:

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

Могу ли я как-то повлиять на JsonResult для вывода того, что мне нужно, или есть способ исправить шаблон, не касаясь кода контроллера?

Ответы [ 2 ]

8 голосов
/ 23 января 2012

В вашем контроллере замените:

return Json(users);

на:

return Json(new { users = users });
7 голосов
/ 25 ноября 2012

Либо, не вводя анонимный объект со свойством users, вы можете изменить свой шаблон следующим образом:

<tbody>
  {{#each this}}
    <tr>
      <td>{{username}}</td>
      <td>{{firstName}} {{lastName}}</td>
      <td>{{email}}</td>
    </tr>
  {{/each}}
</tbody>
...