我可以在Razor视图中使用枚举吗?

时间:2012-10-13 07:47:11

标签: asp.net-mvc asp.net-mvc-3

我有以下枚举:

namespace Storage.Constants.References { 
    public enum RoleType {
        Guest = 1,
        User = 2,
        Admin = 3,
        Super = 4
    } 
}

以下viewmodel:

public class   BaseViewModel
{
    public int Role { get; set; }
}

在我的代码中,我有以下内容。请注意,Enum由代码识别。

@if (Model.Role >= RoleType.Admin) {
   xx
}

我的代码在运行时因以下消息而失败:

错误CS0019:运算符'> ='无法应用于'int'和'Storage.Constants.References.RoleType'类型的操作数

3 个答案:

答案 0 :(得分:4)

两个选项。将RoleType.Admin转换为int,因为RoleType.Admin是枚举类型。

@if (Model.Role >= (int)RoleType.Admin) { 
   xx 
} 

或者使BaseViewModel中的属性成为枚举,因此无需转换:

public class   BaseViewModel
{
    public RoleType Role { get; set; }
}
@if (Model.Role >= RoleType.Admin) { 
   xx 
} 

答案 1 :(得分:0)

试试这个:

@if (Model.Role >= (int)RoleType.Admin) { 
   xx 
} 

答案 2 :(得分:-1)

如果你想这样做,你需要在比较时将RoleType.Admin转换为int。