将int类型转换为我的自定义枚举

时间:2014-02-25 12:59:22

标签: c# .net

我的模特有财产

public enum CheckStatus
{
   A = 1,
   B = 2,
   C = 3,
}
public CheckStatus Status { get; set; }

并且在razor视图中我想切换此属性,如

@switch (Model.Status)
{
    case 1:
    default:
       <div>Selected A</div>
       break;
    case 2:
       <div>Selected B</div>
       break;
    case 3:
       <div>Selected C</div>
       break;
}
  

无法隐式转换类型&#39; int&#39;到CheckStatus&#39;。一个明确的   存在转换(你错过了演员吗?)

2 个答案:

答案 0 :(得分:4)

您的switch语句参数和案例Label必须具有相同的数据类型。

所以将你的枚举投射到这样的int

switch ((int)Model.Status)
{
    case 2:
       <div>Selected B</div>
       break;
    case 3:
       <div>Selected C</div>
       break;
    default:
       <div>Selected A</div>
       break;
}

或在案例陈述中也使用CheckStatus

switch (Model.Status)
{

    case CheckStatus.B:
       <div>Selected B</div>
       break;
    case CheckStatus.C:
       <div>Selected C</div>
       break;
    default:
       <div>Selected A</div>
       break;
}

我删除了第一个案例,因为在这种情况下你没有做任何事情。同时将default案例放在最后,使事情变得可读。您也可以使用Case 1并删除default(如果需要)

答案 1 :(得分:0)

试试这个

switch((int) Model.Status) { }

达到目标!

附录:Model.Status只返回A,B等,而不是后面的整数值。

相关问题