none
obtener el valor de un RadioButton en el Controlador RRS feed

  • Pregunta

  • Saludos

    Tengo el siguiente problema. En la vista inicial tengo 2 RadioButton para seleccionar con que tipo de persona voy a ingresar a mi sistema.

    Como puedo saber en el controlador cual esta seleccionado.

    Pero cuando yo seleccione el radiobotton el controlador sepa cual ha sido seleccionado.

    jueves, 25 de octubre de 2012 17:06

Respuestas

  • Buenas!

    La primera forma que propone @jbalde está realmente en desuso, puesto que estás especificando donde de la request está el parámetro (en su ejemplo en FormData, es decir en un <form> enviado por POST).

    El tema está en que ASP.NET MVC dispone de un mecanismo potentísimo (value providers + model binder) para desligarnos de todo esto. Así que la solución real es la que propone @jbalde en su segunda opción. Esto te independiza de si los valores estan en FormData, querystring o donde sea.

    Y falta una tercera opción: en lugar de usar un viewmodel con una propiedad, declarar directamente el parámetro:

    public ActionResult RecogePorModel(string tipopersona) {
       // ...
    }

    Esta es equivalente a la segunda que ha propuesto @jbalde.

    Saludos!!


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


    • Editado eduard tomàsMVP lunes, 29 de octubre de 2012 14:42
    • Marcado como respuesta Christian.9 miércoles, 31 de octubre de 2012 20:00
    lunes, 29 de octubre de 2012 14:41

Todas las respuestas

  • No se si lo haces con modelos o con parametros que recoges. Si lo haces con parámetros, tienes que poner el mismo nombre a los radio y una vez así, los recoges con el form de .net. Si lo haces con un modelo, en la propiedad del modelo tendras el valor. Te lo pongo con un ejemplo para que veas como es

    <input type="radio" name="tipopersona" value="cliente" />
    <input type="radio" name="tipopersona" value="proveedor" />

    Lo puedes recibir de 2 maneras

    public ActionResult RecogePorForm() {
      this.Request.Form["tipopersona"];
    }
    
    public ActionResult RecogePorModel(MiModelo modelo) {
      modelo.tipopersona;
    }

    Siendo el modelo algo como:

    public class MiModelo {
      public tipopersona { get; set; }
    }

    Si el valor que recoges es null, es que no se ha seleccionado nada, sino el valor que recogeras sera el que especifiques en el value.

    viernes, 26 de octubre de 2012 11:23
  • Buenas!

    La primera forma que propone @jbalde está realmente en desuso, puesto que estás especificando donde de la request está el parámetro (en su ejemplo en FormData, es decir en un <form> enviado por POST).

    El tema está en que ASP.NET MVC dispone de un mecanismo potentísimo (value providers + model binder) para desligarnos de todo esto. Así que la solución real es la que propone @jbalde en su segunda opción. Esto te independiza de si los valores estan en FormData, querystring o donde sea.

    Y falta una tercera opción: en lugar de usar un viewmodel con una propiedad, declarar directamente el parámetro:

    public ActionResult RecogePorModel(string tipopersona) {
       // ...
    }

    Esta es equivalente a la segunda que ha propuesto @jbalde.

    Saludos!!


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


    • Editado eduard tomàsMVP lunes, 29 de octubre de 2012 14:42
    • Marcado como respuesta Christian.9 miércoles, 31 de octubre de 2012 20:00
    lunes, 29 de octubre de 2012 14:41