2011-02-14 14 views
17

Escribí una restricción de ruta personalizada, pero su filtro simplemente no se reconoce. ¿Alguien tiene un ejemplo de uso de IRouteConstraint?Cómo hacer una ruta de filtro IRouteConstraint

Además, tenga en cuenta a los desarrolladores: Tengo doble visualización del formulario en mi Android. Algo debe estar mal con la representación parcial?

+0

¿Ha intentado utilizar el depurador para establecer una punto de interrupción en su filtro para ver si se llama? – Eilon

Respuesta

22

Aquí hay una restricción simple que mira hacia arriba una babosa artículo en un repositorio de ficción:

public class SlugRouteConstraint : IRouteConstraint 
{ 
    private readonly ISlugRepository slugRepository = new SlugRepository(); 

    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
    { 
     if (!values.ContainsKey(parameterName)) 
      return false; 

     var slug = (string)values[parameterName]; 

     return slugRepository.Exists(slug); 
    } 
} 

Usted puede cablear la restricción de la siguiente manera:

routes.MapRoute("Slugs", "{slug}", 
    new { controller = "Articles", action = "View" }, 
    new { slug = new SlugConstraint() }); 
Cuestiones relacionadas