Tengo algunas URL que se ven así: /Collection/Summary?ViewBy=AZ

Estoy tratando de implementar una declaración de cambio para que si la url contiene X, Y sucederá.

Esto funcionaba cuando solo era un if / else, pero no estoy seguro de cómo funcionaría con la expresión de cambio, especialmente la parte Contains.

Aquí está el fragmento de código:

@{ 
    switch(Request.RawUrl.Contains)
    {
        case "Summary":
        case "Detail":
            @Styles.Render("~/Content/global");
            break;
        default:
            @Styles.Render("~/Content/site");
            break;
    }
}
-3
Bodrov 6 dic. 2019 a las 00:49

2 respuestas

La mejor respuesta

Si coloca sus términos de búsqueda en una lista o matriz, podemos usar el método de extensión FirstOrDefault para obtener el primer elemento de la lista que contiene la URL sin procesar, y puede escribir un código similar a lo que parece ser falto:

var keywords = new[] {"Summary", "Detail"};

switch(keywords.FirstOrDefault(Request.RawUrl.Contains))
{
    case "Summary":
    case "Detail":
        @Styles.Render("~/Content/global");
        break;
    default:
        @Styles.Render("~/Content/site");
        break;
}
1
Rufus L 5 dic. 2019 a las 22:22

Contains es una función, no una propiedad o variable con la que hacer coincidir. Utilice ToString o Substring en su lugar.

Otra forma, prueba: ViewContext.RouteData.Values["controller"].ToString()

1
Jeremy Thompson 5 dic. 2019 a las 22:11