2011-02-03 26 views
14

Tengo una lista de URL locales y necesito determinar si son "rutas MVC válidas". ¿Cómo puedo verificar si una URL (ruta) se asigna a un controlador MVC?¿Cómo puedo verificar si existe una ruta (ASP.NET MVC) para una ruta determinada?

Phil Haack's Route Debugger encontrará una ruta que coincida con la solicitud actual y lo hace utilizando el HttpContext actual. Me gustaría obtener esta información sin construir un falso HttpContext, si es posible.

+0

Escriba la ruta en el navegador y busque 404? – Pierreten

+0

¿Desea verificar si son rutas válidas o rutas de MVC válidas? – SLaks

+0

@SLaks rutas MVC válidas – mawtex

Respuesta

14

Puede llamar al RouteTable.Routes.GetRouteData con una HttpContextBase simulada.

Las rutas se combinan internamente utilizando la solicitud AppRelativeCurrentExecutionFilePath. Sin embargo, esta funcionalidad no está expuesta, por lo que debe pasar un HttpContextBase.

Debe crear una clase HttpContextBase que devuelve una instancia HttpRequestBase en su propiedad de solicitud.
La clase HttpRequestBase debe devolver su ruta, comenzando con ~/, en su propiedad AppRelativeCurrentExecutionFilePath.

No necesita implementar ninguna otra propiedad, a menos que sean utilizadas por IRouteConstraint s.

Para comprobar si obtuvo una ruta MVC, verifique si el resultado es routeData.Handler is MvcRouteHandler.

+0

¿Qué partes necesitaría para simular? – mawtex

+1

@mawtex: crea una clase 'HttpContextBase' que devuelve tu URL en su' Request.AppRelativeCurrentExecutionFilePath'. – SLaks

+1

Encontré su mención de AppRelativeCurrentExecutionFilePath requerida muy valiosa ya que estoy escribiendo pruebas para esto ahora. Desearía poder votar más de una vez :) – CRice

Cuestiones relacionadas