none
Como pasar datos de una tabla a un controlador RRS feed

  • Pregunta

  • Buenas tardes, estoy desarrollando una aplicación para ingresar las deducciones de un empleado esta es la vista

    

     La ideas es que en esta tabla aparecerán todos los empleados de una determinada área, a los cuales se le introducirá su deducción, ahora bien, no se como enviar todos los desde la vista al controlador.

    Gracias.

    viernes, 20 de abril de 2018 15:21

Todas las respuestas

  • Pon todo el <table> dentro de un <form> que haga un Post a tu metodo de accion. Agrega un boton que haga el submit del Form.

    Al pulsar el boton, se enviara un post hacia el metodo de accion, y dentro del post iran todas las cajas de texto que tenga la tabla (el resto de los datos no se transmiten al servidor, asi que asegurate de que toda la informacion a transmitir esta en controles de tipo input).

    En el lado del servidor hay varias formas de recoger la informacion, pero una que resulta muy flexible es simplemente recorrer con un bucle la lista de valores que llega en el objeto Form. Esto te da una serie de parejas nombre-valor, en la que cada nombre es el "name" de uno de los input que tenias en la tabla. Si has tenido cuidado de ponerles el name bien elegido para que luego a partir del name puedas reconocer cada caja de texto, eso te permite recuperar todos los valores que habia en la tabla.

    viernes, 20 de abril de 2018 15:47
  • Expandiendo y tratando de meter un poco más las bondades de MVC, creo que MVC podría recoger los valores automáticamente.  Nunca lo he hecho para múltiples objetos, siempre he usado un único modelo, así que esto es teórico de mi lado.

    Si un atributo name tiene el mismo nombre que la propiedad de un modelo, MVC automáticamente asigna ese valor a esa propiedad.

    Ejemplo:

    public class Persona
    {
        public string Nombre { get; set; }
        public int Edad { get; set; }
    }

    Si tuviera una página en MVC que permite la edición o adición de objetos Persona, tendría 2 casillas de texto, una con name="Nombre", y otra con name="Edad".  Luego tendría una acción que recoge los valores de esta forma:

    [HttpPost]
    public ActionResult GuardarPersona(Persona p)
    {
        //El parámetro p ya viene instanciado y lleno con lo que se puso en las casillas de texto.
        ...
    }

    Hasta aquí yo sí lo he experimentado.  Lo que nunca he hecho es recibir múltiples (ejemplo) objetos Persona.  Valdría la pena probar si el siguiente método de acción automáticamente recoge todas las personas de una tabla:

    [HttpPost]
    public ActionResult GuardarPersonas(List<Persona> pers)
    {
        //¿Tendrá pers una cantidad de objetos igual a la cantidad de personas en la tabla HTML?
        ...
    }


    Jose R. MCP
    Code Samples

    viernes, 20 de abril de 2018 16:04
  • hola

    en este caso lo que tienes que lograr es bindear un array

    ASP.NET Wire Format for Model Binding to Arrays, Lists, Collections, Dictionaries

    en el articulo hay varios ejemplos de como deberian ser el name del textbox para que al repetirse se reconozca como parte de la lista

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 23 de abril de 2018 17:53
  • aqui

    Model Binding to List of Objects in ASP.NET MVC

    envia al action una tabla, valida como genera el name

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 23 de abril de 2018 17:57