Asp.net mvc 2 设置多个RouteConstraint on route参数
下面是我使用的代码,但编译器说:匿名类型不能有多个同名属性Asp.net mvc 2 设置多个RouteConstraint on route参数,asp.net-mvc-2,constraints,routes,Asp.net Mvc 2,Constraints,Routes,下面是我使用的代码,但编译器说:匿名类型不能有多个同名属性 context.MapRoute("RouteName", "statics/category/{fileName}", new { controller = "myController", acti
context.MapRoute("RouteName", "statics/category/{fileName}",
new
{
controller = "myController",
action = "Index"
},
new
{
fileName = new fnRouteConstraint(),
fileName = new AnotherRouteConstraint()
});
错误非常简单:您正在创建一个匿名类,其中有两个同名的属性。这和写一样:
public class m {
public string p { get; set; }
public string p { get; set; }
}
要解决此问题,您必须创建另一个IRouteConstraint,其中包含您试图传递的两个约束的逻辑。例如:
编辑:
如果要“合并”两个单独的管线约束,只需创建第三个约束,如下所示:
public ThirdRouteConstraint: IRouteConstraint {
public ThirdRouteConstraint(){}
public bool Match(HttpContextBase httpContext, Route route,
string parameterName, RouteValueDictionary values,
RouteDirection routeDirection)
{
return (new FirstRouteConstraint().Match(httpContext, route, parameterName, values, routeDirection) &&
new SecondRouteConstraint().Match(httpContext, route, parameterName, values, routeDirection));
}
}
错误非常简单:您正在创建一个匿名类,其中有两个同名的属性。这和写一样:
public class m {
public string p { get; set; }
public string p { get; set; }
}
要解决此问题,您必须创建另一个IRouteConstraint,其中包含您试图传递的两个约束的逻辑。例如:
编辑:
如果要“合并”两个单独的管线约束,只需创建第三个约束,如下所示:
public ThirdRouteConstraint: IRouteConstraint {
public ThirdRouteConstraint(){}
public bool Match(HttpContextBase httpContext, Route route,
string parameterName, RouteValueDictionary values,
RouteDirection routeDirection)
{
return (new FirstRouteConstraint().Match(httpContext, route, parameterName, values, routeDirection) &&
new SecondRouteConstraint().Match(httpContext, route, parameterName, values, routeDirection));
}
}
给出约束名称:
routes.MapRoute(
name: "app2",
url: "app/{id}",
defaults: new { controller = "App", action = "Index", id = UrlParameter.Optional },
constraints: new { RouteConstraint1 = new RouteConstraint1(),
RouteConstraint2 = new RouteConstraint2()
}
);
给出约束名称:
routes.MapRoute(
name: "app2",
url: "app/{id}",
defaults: new { controller = "App", action = "Index", id = UrlParameter.Optional },
constraints: new { RouteConstraint1 = new RouteConstraint1(),
RouteConstraint2 = new RouteConstraint2()
}
);
是的,这很简单,我知道,实际上这是一个例子。我想知道如何使用Multi-RouteConstraint。nayyeries没有描述任何在onegood中使用两个RC的方法,因为我是显式地实现IRouteConstraint的,我没有访问Match方法的权限。谢谢,这很简单,我知道,实际上这是一个例子。我想知道如何使用Multi-RouteConstraint。nayyeries没有描述任何在onegood中使用两个RC的方法,因为我是显式地实现IRouteConstraint的,我没有访问Match方法的权限。谢谢