2010-12-11 5 views
4

startet Ich muss eine Route für URL erstellen, die nicht von einigen Literal gestartet wird. Ich habe die folgende Route Definition erstellt:ASP.NET MVC Route, die nicht mit einigen Literal

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

aber sieht aus wie es nicht

+0

Haben Sie andere Routen zugeordnet? – cspolton

+0

Nein, ich habe alle anderen Routen zum Testen kommentiert. – SiberianGuy

+0

Und welche URLs versuchen Sie mit dieser Route zu verbinden? – cspolton

Antwort

4

funktioniert Sie können mit einer Route Einschränkung versuchen:

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

Und dann:

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