Sto iniziando un nuovo progetto, e mi piace usare il KnockoutJS + Web Api che sono nuovo per me, ho una buona conoscenza del Web Api, ma Knockout è difficile da capire in questo momento.ASP.Net Web Api + KnockoutJs + MVC4 - Legare insieme
Questo è il mio pensiero iniziale di come voglio che la mia app per lavorare:
- Ho un controller standard MVC come
LeadsController
LeadsController
ha unAction
chiamatoListLeads
, questo in realtà non restituire alcun i dati però, ma restituisce solo una vista con un modello per visualizzare i dati da Knockout.- La vista
ListLeads
chiama il mio controller apiLeadsApiController
tramite la tecnologia AJAX per ottenere una lista di contatti per visualizzare - I dati cavi è poi associati a un KnockoutJs ViewModel (Non voglio replicare mio punto di vista i modelli dal lato server in JavaScript visualizza modelli)
- Desidero utilizzare i file JavaScript esterni il più possibile anziché gonfiare la mia pagina HTML piena di JavaScript.
Ho visto molti esempi ma la maggior parte di essi restituisce alcuni dati iniziali sul caricamento della prima pagina, piuttosto che tramite una chiamata ajax.
Quindi la mia domanda è: come creare il mio JavaScript viewModel per Knockout quando recuperato da ajax, dove viene creato l'url ajax utilizzando Url.Content()
.
Inoltre, se avessi bisogno di ulteriori valori calcolati su questo ViewModel, come estenderò il modello di visualizzazione mappato dal lato server.
Se non mi sono spiegato bene, per favore fammi sapere di cosa non sei sicuro e cercherò di aggiornare la mia domanda per essere più esplicita.
Ciao Joe. Il tuo approccio è assolutamente corretto e molti tutorial/blog che ho visto hanno una soluzione simile. Ho valutato questo approccio per una grande applicazione web che stiamo iniziando. Il mio problema è scrivere molto di JS che ritengo sia difficile da gestire. Inoltre, che senso ha utilizzare i controller MVC e WebAPI e perché utilizzare un controller MVC per passare una vista vuota? sembra come la sua creazione di doppiezza. – Yashvit
MCV restituisce il codice HTML statico per la pagina. L'API Web restituisce i dati JSON del modello di visualizzazione per la pagina. Se non ti piace una vista "vuota" ma vuoi comunque utilizzare Knockout, puoi invece serializzare i dati del modello di visualizzazione su JSON sul server e inserirli nella vista HTML, purché tu non voglia utilizzare AJAX e non importa che l'HTML non sia più memorizzabile nella cache. –
Oggigiorno esistono molte soluzioni per la gestione di applicazioni JS di grandi dimensioni. Nell'anno da quando ho scritto questa risposta, ora abbiamo Breeze.js e Durandal per organizzare tutto e implementare l'impianto idraulico. Scopri il progetto demo di Breeze TempHire. –