2015-09-25 94 views
0

我需要根据特定条件重新编写URL。我尝试在routeconfig.cs中添加条件检查并附上不同的路由。URL的URLRoutes()方法重写但不起作用。访问网站时,它显示目录,这会导致错误。如何在routeconfig.cs中创建条件

下面是一个例子:

routes.MapRoute(...) 

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

routes.MapRoute(...) 

如果我删除的条件,它的工作原理。

有没有其他方法可以做到这一点?

+4

你能告诉你的代码?它没有你的条件工作吗? –

+1

您如何期待这项工作?路线是在应用程序启动时建立的,并且是“常量”。他们不了解一旦建立的条件逻辑。 –

+0

1.我们不知道你的“病情”是什么。 2.我们并没有真正做到你做了什么。 – DPac

回答

1

您可以使用自定义的约束本:

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