none
Como ejecuto un action con valores hardcoded desde la vista? RRS feed

  • Pregunta

  • Hola, tengo el siguiente escenario:

    - en un archivo .ascx, en algun lugar de markup tendria hardcoded una lista de ids. (input, hidden field no lo defini todavia)

    - la vista esta tipada

    - quiero que al hacer un render partial, en el controller buscar esos ids, procesarlos (consultas a bd y traer info), llenar el Model en la vista y retornar la vista procesada. Desde la vista, quiero hacer un foreach para ir recorriendo cada uno de los resultados. (Model.count >0)

    Alguien sabe como lograr esto? soy nuevo en MVC y estoy haciendo mis primeras apps con este framework.

    Saludos

    miércoles, 7 de marzo de 2012 13:02

Respuestas

  • Hola,

    Dentro del patrón MVC, no deberías "tratar los datos" desde las vistas, solo leerlos y mostrarlos en el formato adecuado. El artefacto que si que tiene la capacidad de manejar esos datos, operar con ellos, transformarlos, borrarlos, etc... es el controlador. Y para poder gestionar el estado real de los esos datos, usamos otra serie de artefactos llamados modelos

    Basándome en esa premisa, crearía un nuevo modelo para gestionar esa lista que muestra en el vista harcoded. De esta forma haría que la vista en lugar de tener hardcoded la lista de valores, los recogiera del modelo (que le pasa la acción del controlador).

    Y si necesitara que otra vista operara con ese modelo y lo mostrara de una forma diferente, estas operaciones las haría en su acción del controlador, dejando que la vista, simplemente, recorra los datos para mostrarlos en pantalla.

    Un saludo,


    Fernanando Escolar - http://www.programandonet.com/ - @fernandoescolar

    • Marcado como respuesta Eder Costa viernes, 26 de octubre de 2012 14:47
    miércoles, 7 de marzo de 2012 15:37
  • Buenas!

    Tienes que mandar los IDs desde la vista al controlador. Como hacerlo exactamente depende del flujo de tu aplicación (se puede usar Ajax, GET o POST o incluso otros métodos menos ortodoxos).

    Lo más rápido si eso te es posible es renderizar los IDs en un campo <hidden> dentro de un <form> y via javascript mandar este <form> al controlador. Si quieres una actualización total de la pag. puedes hacer un POST normal, si quieres una actualización parcial debes hacerlo via AJAX.

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    • Marcado como respuesta Eder Costa viernes, 26 de octubre de 2012 14:47
    jueves, 8 de marzo de 2012 8:01

Todas las respuestas

  • Hola,

    Dentro del patrón MVC, no deberías "tratar los datos" desde las vistas, solo leerlos y mostrarlos en el formato adecuado. El artefacto que si que tiene la capacidad de manejar esos datos, operar con ellos, transformarlos, borrarlos, etc... es el controlador. Y para poder gestionar el estado real de los esos datos, usamos otra serie de artefactos llamados modelos

    Basándome en esa premisa, crearía un nuevo modelo para gestionar esa lista que muestra en el vista harcoded. De esta forma haría que la vista en lugar de tener hardcoded la lista de valores, los recogiera del modelo (que le pasa la acción del controlador).

    Y si necesitara que otra vista operara con ese modelo y lo mostrara de una forma diferente, estas operaciones las haría en su acción del controlador, dejando que la vista, simplemente, recorra los datos para mostrarlos en pantalla.

    Un saludo,


    Fernanando Escolar - http://www.programandonet.com/ - @fernandoescolar

    • Marcado como respuesta Eder Costa viernes, 26 de octubre de 2012 14:47
    miércoles, 7 de marzo de 2012 15:37
  • Hola,

    Dentro del patrón MVC, no deberías "tratar los datos" desde las vistas, solo leerlos y mostrarlos en el formato adecuado. El artefacto que si que tiene la capacidad de manejar esos datos, operar con ellos, transformarlos, borrarlos, etc... es el controlador. Y para poder gestionar el estado real de los esos datos, usamos otra serie de artefactos llamados modelos

    Basándome en esa premisa, crearía un nuevo modelo para gestionar esa lista que muestra en el vista harcoded. De esta forma haría que la vista en lugar de tener hardcoded la lista de valores, los recogiera del modelo (que le pasa la acción del controlador).

    Y si necesitara que otra vista operara con ese modelo y lo mostrara de una forma diferente, estas operaciones las haría en su acción del controlador, dejando que la vista, simplemente, recorra los datos para mostrarlos en pantalla.

    Un saludo,


    Fernanando Escolar - http://www.programandonet.com/ - @fernandoescolar

    Gracias por la respuesta pero por ahi no se entendio, no quiero romper con el patron MVC. En el markup, voy a tener id hardcoded, porque viene de afuera, de un gestor de contenido (teamsite en este caso). Cuando se "muestre" el ascx quiero poder pasarle al controller la lista de id que estan en markup.

    Logicamente como decis, en el controller proceso esos ids, y retorno la misma vista, con el modelo.

    En la vista, hago un foreach de Model.xxxx y voy armando el resto del html.

    miércoles, 7 de marzo de 2012 22:33
  • Buenas!

    Tienes que mandar los IDs desde la vista al controlador. Como hacerlo exactamente depende del flujo de tu aplicación (se puede usar Ajax, GET o POST o incluso otros métodos menos ortodoxos).

    Lo más rápido si eso te es posible es renderizar los IDs en un campo <hidden> dentro de un <form> y via javascript mandar este <form> al controlador. Si quieres una actualización total de la pag. puedes hacer un POST normal, si quieres una actualización parcial debes hacerlo via AJAX.

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    • Marcado como respuesta Eder Costa viernes, 26 de octubre de 2012 14:47
    jueves, 8 de marzo de 2012 8:01