2010-01-13 10 views
6

Was wäre eine gültige Regex für eine MVC Route Constraint übergeben ein Bool? Zum Beispiel habe ich den folgenden Weg:MVC Route Constraint für bool

routes.MapRoute("MenuRouteWithExtension", 
    "Menu.mvc/{action}/{projectId}/{dealerId}/{isGroup}", 
    new { controller = "Menu", action = "RedirectUrl", 
      projectId = "", dealerId = "", isGroup = "" } 
    new { projectId = @"\d+", dealerId = @"\d+", isGroup = @"???" }); 

Grundsätzlich muss ich wissen, was anstelle der gültig wäre ??? im obigen Codebeispiel.

Auf diese Weise kann die Aktion am anderen Ende dergleichen Bool-Typ:

public ActionResult RedirectUrl(int projectId, int dealerId, bool isGroup) 

Sie für Ihre Eingabe Vielen Dank im Voraus. So

Antwort

17
isGroup = @"^(true|false)$" 

...

routes.MapRoute(
    "MenuRouteWithExtension", 
    "Menu.mvc/{action}/{projectId}/{dealerId}/{isGroup}", 
    new 
    { 
    controller = "Menu", 
    action = "RedirectUrl", 
    projectId = "", 
    dealerId = "", 
    isGroup = "" //Possibly set this to 'true' or 'false'? 
    }, 
    new 
    { 
    projectId = @"^\d+$", 
    dealerId = @"^\d+$", 
    isGroup = "^(true|false)$" 
    } 
); 

Gehäuse sollte keine Rolle spielen, so sollte True akzeptiert werden, sowie falSE.

Auch habe ich ^ und $ auf die Regex-Werte, so dass sie nicht übereinstimmen, zum Beispiel blahtrueblah.

+2

sollte nicht dealerId = @ "^ \ d $ +", sei dealerId = @ "^ \ d + $", nur die letzten 2 Zeichen umschalten – BlackTigerX

+0

@BlackTigerX: Yep! Danke, dass du dieses raus zeigst! –