2010-01-13 5 views
6

Quelle serait une expression régulière valide pour une contrainte de route MVC passant un bool? Par exemple, je l'itinéraire ci-dessous:Contrainte de route MVC pour bool

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

Fondamentalement, je dois savoir ce qui serait valable à la place du ??? dans l'exemple de code ci-dessus.

De cette façon, l'action de l'autre extrémité peut utiliser le type bool comme:

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

Nous vous remercions d'avance pour votre entrée.

Répondre

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

Alors ...

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)$" 
    } 
); 

boîtier ne doit pas question, donc True devrait être accepté, ainsi que falSE.

Aussi, j'ai mis ^ et $ sur les valeurs regex afin qu'ils ne correspondent pas, par exemple blahtrueblah.

+2

ne doit pas dealerId = @ "^ \ d $ +", être dealerId = @ "^ \ d + $", il suffit de basculer les 2 derniers caractères – BlackTigerX

+0

@BlackTigerX: Yep! Merci d'avoir signalé ça! –