2010-01-13 20 views
6

¿Cuál sería una expresión regular válida para una restricción de ruta MVC que pasa un bool? Por ejemplo, tengo la ruta a continuación:MVC Restricción de ruta para bool

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

Básicamente, lo que necesita saber lo que sería válido en lugar de la ??? en el ejemplo de código anterior.

De esta manera, la acción en el otro extremo se puede utilizar el tipo bool como:

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

Gracias de antemano por su entrada.

Respuesta

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

Entonces ...

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

carcasa no debe importar, por lo True deberían ser aceptados, así como falSE.

Además, he puesto ^ y $ en los valores regex para que no coincidan, por ejemplo blahtrueblah.

+2

no debe dealerId = @ "^ \ d $ +", be dealerId = @ "^ \ d + $", simplemente cambie los últimos 2 caracteres – BlackTigerX

+0

@BlackTigerX: ¡Sí! ¡Gracias por señalarlo! –

Cuestiones relacionadas