En primer lugar, soy nuevo en MVC, por lo que le pido disculpe si es básico.Obtener valor de parámetro nulo en el controlador cuando se activa una ruta MVC
Estoy usando una ruta personalizada para crear la siguiente URL (http: // mysite/subscriber/12345) donde 12345 es el número de abonado. Quiero que ejecute la acción ShowAll en el controlador Suscriptor. Mi ruta se está disparando y usando Phil's route debugger, cuando paso en la url anterior, el depurador de ruta muestra ID como 12345.
Mi controlador acepta un int como subscriptionerID. Cuando se dispara, el controlador arroja el error "El diccionario de parámetros contiene una entrada nula para el parámetro 'id' de tipo no nulo 'System.Int32". ¿Por qué el depurador de ruta muestra un valor y el controlador no lo ve?
Aquí es mi ruta (el primero es el culpable)
routes.MapRoute(
"SubscriberAll",
"subscriber/{id}",
new { controller = "Subscriber", action = "ShowAll", id=0 },
new { id = @"\d+" } //confirm numeric
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Alguna idea de por qué estoy recibiendo un nulo en la acción ShowAll? Aquí está la firma del método de acción:
public ActionResult ShowAll(int id)
¿Puede publicar todos los registros de rutas junto con la firma del método de acción? –
Sí. Actualizó la pregunta. –
Creo que el problema está en tu restricción. No soy un ninja regex, así que no puedo ayudarte allí. –