2012-01-23 18 views
2

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

var source = $("#some-template").html(); 
var template = Handlebars.compile(source); 
var data = { users: [ 
    {username: "alan", firstName: "Alan", lastName: "Johnson", email: "[email protected]" }, 
    {username: "allison", firstName: "Allison", lastName: "House", email: "[email protected]" }, 
    {username: "ryan", firstName: "Ryan", lastName: "Carson", email: "[email protected]" } 
]}; 
$("#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 и я не может думать так, как я должен descripbe мой шаблон, потому что он не имеет «пользователи» собственность, это выглядит следующим образом:

{[{username: "alan", firstName: "Alan", lastName: "Johnson", email: "[email protected]" }]} 

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

ответ

8

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

return Json(users); 

с:

return Json(new { users = users }); 
7

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

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