2012-10-21 4 views
2

Je commence un SPA Proof-of-concept en utilisant la nouvelle API Web et Knockout, jusqu'à présent j'ai réussi à créer le contrôleur API, le consommer avec Knockout et mapper des entités et des tableaux en utilisant le mappage Knockout. J'essaie maintenant de créer un simple CRUD, mais je n'arrive pas à comprendre comment implémenter les ViewModels.API Web ASP.NET MVC 4 & Knockout.js

Jusqu'à présent, Ive venir avec 2 options, énumérées ci-dessous:

  • je peux définir un ViewModel sur le serveur, qui contient les attributs entity's, plus un tableau de la même entité. Lorsque j'entre la fonctionnalité CRUD, j'appelle le serveur et récupère ce ViewModel, avec la liste d'entités et les attributs pour créer une nouvelle entrée.

  • Je peux définir 2 ViewModels, l'un avec les données de la grille, et l'autre avec les attributs de l'entité. Lorsque j'appelle la fonctionnalité CRUD, j'obtiens les données de la grille, et quand je veux éditer/créer une nouvelle entrée, j'appelle le serveur et récupère le ViewModel pour cela.

Sur les deux options que j'utiliser une vue unique, qui contient la définition de la grille, et le modifier/créer format forme, que j'afficher sur un pop-up JQuery.

Je ne peux pas déterminer quelle serait la meilleure option, je commence à pencher vers la 2ème, mais quelques conseils seraient appréciés.

Merci d'avance!

Répondre

1

Avez-vous vraiment besoin d'appeler le serveur au moment où vous lancez la boîte de dialogue Créer/Modifier? Ne pouvez-vous pas avoir, par exemple, un ObservableArray of EntityVM (un modèle de vue Knockout) comme source de liaison de votre grille et lorsque vous cliquez sur Ajouter un nouveau ou cliquez sur un élément existant, la boîte de dialogue Créer/Modifier est visible. fait avec la liaison aussi) avec soit un EntityVM vide comme source de données ou un EntityVM peuplé copié à partir de l'élément de la source du réseau? Puis, lorsque vous cliquez sur Enregistrer, Ajax l'entité en tant que JSON sur le serveur et renvoyez une réponse JSON représentant les données de grille mises à jour? Ou n'est-ce pas la bonne compréhension de votre contexte?

+0

Oui, c'est une approche beaucoup plus propre. Merci! –