是否可以为从RouteBase
继承的自定义路由添加约束?
我的路线看起来像这样:
public class PageRoute : RouteBase {
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var path = httpContext.Request.Path;
if (path.Contains("api") || path.Contains("ui"))
{
return null;
}
我认为这看起来有点阴暗,我想注册我的路线并说,如果网址包含api
或ui
,请不要试图尝试这条路线。这可能吗?
答案 0 :(得分:0)
一些注意事项: 1.如果要仅指定约束,则希望从Route而不是RouteBase派生。约束在Route类中引入。 2.像你一样指定约束(在GetRouteData中显式)它没有任何问题,它只是不可扩展。 3. path.Containts(“api”)不是一个非常好的约束,同样不是带有“ui”的约束,它会因为几个原因而失败(不区分大小写和像“maping”这样的字符串会使它失败)。
所以你想考虑一下:
var segments = path.Split(new[] { '/' });
segments.Any(segment => segment.Equals("api", StringComparison.OrdinalIgnoreCase) ||
segment.Equals("ui", StringComparison.OrdinalIgnoreCase));