代码之家  ›  专栏  ›  技术社区  ›  4thSpace wkw

如何在routeconfig.cs中创建条件

  •  0
  • 4thSpace wkw  · 技术社区  · 9 年前

    我需要根据特定条件重写URL。我试图在routeconfig中添加条件检查。cs并包围不同的路线。URL的MapRoutes()方法会重写,但这不起作用。访问网站时,它会显示目录,这会导致错误。

    下面是一个示例:

    routes.MapRoute(...)
    
    ClassA classA = new Class();
    if(classA.IsThisTrue()) {
      routes.MapRoute(...)
      routes.MapRoute(...)
    }
    
    routes.MapRoute(...)
    

    如果我删除条件,它就会起作用。

    还有别的办法吗?

    1 回复  |  直到 9 年前
        1
  •  2
  •   Sam FarajpourGhamari    9 年前

    您可以为此使用自定义约束:

    public class MyCons : IRouteConstraint
    {
        public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
        {
            ClassA classA = new Class();
            return classA.IsThisTrue();
        }
    }
    

    然后在您的路线中使用它:

    routes.MapRoute(
        name: "myRoute",
        // your own route 
        url: "myUrl/{myParam}",
        defaults: new { controller = "Some", action = "Index" }
        constraints: new { myParam= new MyCons() }
    );
    // other route
    routes.MapRoute(
        name: "myOtherRoute",
        // your own route 
        url: "myOtherUrl/{myParam}",
        defaults: new { controller = "Foo", action = "Index" }
        constraints: new { myParam= new MyCons() }
    );