2011-02-14 73 views
17

我写了一个自定义路由约束,但其过滤器不能被识别。有没有人有IRouteConstraint工作用例的例子?如何使IRouteConstraint过滤器路由

此外,请注意开发人员:我得到双重显示在我的android形式。部分渲染必须有错误吗?

+0

您是否尝试过使用调试器设置你的过滤器中的断点,看它是否被调用? – Eilon 2011-02-15 19:16:42

回答

22

这里有一个简单的约束查找文章塞在一个虚构的库:

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); 
    } 
} 

你可以连线了约束这样的:

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