Como ejecuto un action con valores hardcoded desde la vista?

답변됨 Como ejecuto un action con valores hardcoded desde la vista?

  • 2012년 3월 7일 수요일 오후 1:02
     
     

    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

모든 응답

  • 2012년 3월 7일 수요일 오후 3: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

    • 답변으로 표시됨 Eder CostaOwner 2012년 10월 26일 금요일 오후 2:47
    •  
  • 2012년 3월 7일 수요일 오후 10:33
     
     

    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.

  • 2012년 3월 8일 목요일 오전 8:01
     
     답변됨

    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

    • 답변으로 표시됨 Eder CostaOwner 2012년 10월 26일 금요일 오후 2:47
    •