Estoy comenzando un nuevo proyecto, y estoy dispuesto a utilizar KnockoutJS + Web Api que son nuevos para mí, tengo un buen conocimiento de Web Api, pero Knockout es difícil de entender en este momento.ASP.Net Web Api + KnockoutJs + MVC4 - Vincularlo
Ésta es mis pensamientos iniciales de cómo quiero que mi aplicación para trabajar:
- que tienen un controlador estándar MVC como
LeadsController
LeadsController
Action
tiene una llamadaListLeads
, esto no vuelven en realidad cualquier datos, pero solo devuelve una vista con una plantilla para mostrar los datos de Knockout.- La vista
ListLeads
llama mi controlador de APILeadsApiController
a través de AJAX para obtener una lista de clientes potenciales para mostrar - Los datos de clientes potenciales a continuación, se asigna a un modelo de vista KnockoutJs (no quiero replicar mis modelos de vista del lado del servidor en JavaScript ver modelos)
- Quiero usar archivos JavaScript externos tanto como sea posible en lugar de hinchar mi página HTML llena de JavaScript.
He visto muchos ejemplos pero la mayoría de ellos devuelve algunos datos iniciales en la carga de la primera página, en lugar de a través de una llamada ajax.
Así que mi pregunta es, ¿cómo crearía mi JavaScript viewModel para Knockout cuando se recupera de ajax, donde se crea la URL ajax usando Url.Content()
.
Además, ¿qué sucede si necesito valores calculados adicionales en este ViewModel, cómo extendería el modelo de vista mapeada desde el lado del servidor.
Si no me he explicado bien, por favor avíseme de lo que no está seguro e intentaré actualizar mi pregunta para que sea más explícita.
Hola Joe. Tu enfoque es absolutamente correcto y una gran cantidad de tutoriales/blogs que he estado viendo tienen una solución similar. He estado evaluando este enfoque para una gran aplicación web que estamos comenzando. Mi problema es escribir mucho de JS que considero que es difícil de manejar. ¿De qué sirve usar controladores MVC y WebAPI y por qué usar un controlador MVC para pasar una vista vacía? parece que está creando duplicidad. – Yashvit
MCV devuelve el HTML estático para la página. La API web devuelve los datos JSON del modelo de vista para la página. Si no te gusta una vista "vacía" pero aún quieres utilizar Knockout, puedes serializar los datos del modelo de vista a JSON en el servidor e insertarlo en la vista HTML, siempre y cuando no quieras usar AJAX y no me importa que el HTML ya no sea almacenable en caché. –
Hoy en día existen muchas soluciones para administrar grandes aplicaciones JS. En el año desde que escribí esta respuesta, ahora tenemos Breeze.js y Durandal para organizar todo e implementar la plomería. Vea el proyecto de demostración BreeHe's TempHire. –