MVC 4. Desde la vista llamo a una acción del controlador pasándole un parámetro, y SIEMPRE llega NULL. ¿Por qué?

 

Cuidado porque semejante tontería me ha hecho perder un buen ratito, así que paso a documentarla.

  • En la vista tengo algo como:”<a id=’lnkID’ target=’_blank’ href=’Txxx/List/${Id}’>Abrir</a>”

Simplemente un link que apunta a una acción (List) de un controlador (Txxx), pasándolo un parámetro (Id).

  • La definición de la acción de mi controlador es algo así: public ActionResult List(int idEmpresa) { …… }

Parece sencillo, la acción debería recibir el parámetro de la vista y punto. Doy por sentado de que la definición de las rutas es correcta.

public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                “Cxxx_default”,
                “Cxxx/{controller}/{action}/{id}”,
                new { action = “Index”, id = UrlParameter.Optional }
            );
        }

PROBLEMA:

La acción siempre recibe el parámetro nulo!!

SOLUCIÓN:

Elemental querido MVC, el parámetro de la acción debe llamarse “Id” y no “idEmpresa” Ruborizado.

Tras cambiar el nombre del parámetro en la acción: public ActionResult List(int Id) {}, el funcionamiento ya ES CORRECTO!!

Sonrisa

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s