He visto ASP.Net MVC routing legacy URLs passing querystring Ids to controller actions y varias otras publicaciones similares para el enrutamiento de URL heredado, pero no puedo pasar el error "El RouteData debe contener un elemento denominado 'controller' con un non- valor de cadena vacía ". Al ver esto en línea no me dio ninguna pista para resolver mi problema.Reescritura de URL heredada con parámetros de cadena de consulta
He implementado la clase Legado de enrutamiento se describe en el enlace de arriba, y esto es lo que he definido en la tabla de enrutamiento:
routes.Add(
"Legacy",
new LegacyRoute("fooref.aspx",
"FooRef",
new LegacyRouteHandler())
);
routes.MapRoute(
"FooRef",
"{controller}/{action}",
new
{
controller = "Home",
action = "Index",
foo_id = UrlParameter.Optional,
bar_id = UrlParameter.Optional
}
);
Cuando uso depurador ruta de Phil Haack, indica que fooref .aspx tiene una coincidencia, pero cuando desactivo el depurador de ruta, aparece el error anterior. Si reverso el orden de extracto, obtengo "Recurso no encontrado" para /ctprefer.aspx, lo cual tiene sentido, por lo que parece estar encontrando eso como una ruta válida cuando se coloca en el otro orden.
¿Dónde debo declarar que falta esta referencia de controlador?
¿Se han modificado los requisitos de enrutamiento para ASP.NET MVC 2 RTM?
¿Sigue siendo una pregunta válida o fue temporal? ¿Encontraste alguna solución? – jcolebrand
No, todavía no he encontrado una solución. Quizás MVC 3 me permite resolverlo. No he vuelto a mirar esto por un tiempo. –