domingo, 27 de enero de 2019

CS0151 Switch case no funciona con una variable ViewBag string

CS0151: A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type

Me encontré con este error al tratar de usar una variable de ViewBag dentro de un switch case.
De hecho el error sale desde que el código es evaluado en tiempo de diseño.
La variable es de tipo string por lo que no entendía a qué se debe este error. Lo primero que intenté fue agregar un ToString a la variable pero esto no es suficiente.

Al parecer se debe a que la variable de ViewBag es una expresión dinámica y no puede ir dentro de la expresión switch case.

@{
    var mivariable = ViewBag.MiVariable.ToString();
    switch (mivariable)
    {
        case "uno": Html.Action("action1"); break;
        case "dos": Html.Action("action2"); break;
       
    }

}

Solución.

Tienen que hacer un cast string a la variable para poder usarla dentro del switch case.

var mivariable = (string)ViewBag.MiVariable.ToString();


Espero les sirva.



No hay comentarios.:

Publicar un comentario