2010-12-11 4 views
4

Je dois créer une route pour l'URL qui ne commence pas à partir d'un littéral. J'ai créé la définition de l'itinéraire suivant:Route ASP.NET MVC qui ne commence pas par un littéral

routes.MapRoute("", 
        "{something}", 
        new { Controller = "Home", Action = "Index" }, 
        new 
         { 
          something = "^(?!sampleliteral)" 
         }); 

mais semble que cela ne fonctionne pas

+0

Avez-vous d'autres routes mappées? – cspolton

+0

Non, j'ai commenté toutes les autres routes pour les tests – SiberianGuy

+0

Et quelles URL essayez-vous de faire correspondre à cette route? – cspolton

Répondre

4

Vous pouvez essayer avec une contrainte de route:

public class MyConstraint: IRouteConstraint 
{ 
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
    { 
     var value = values[parameterName] as string; 
     if (!string.IsNullOrEmpty(value)) 
     { 
      return !value.StartsWith("sampleliteral", StringComparison.OrdinalIgnoreCase); 
     } 
     return true; 
    } 
} 

Et puis:

routes.MapRoute(
    "", 
    "{something}", 
    new { Controller = "Home", Action = "Index", something = UrlParameter.Optional }, 
    new { something = new MyConstraint() } 
);