0

私は次の列挙型を持っています:

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

次のビューモデル:

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

私のコードには次のものがあります。Enum はコードによって認識されることに注意してください。

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

私のコードは実行時に失敗し、次のメッセージが表示されます。

エラー CS0019: 演算子 '>=' は、タイプ 'int' および 'Storage.Constants.References.RoleType' のオペランドには適用できません

4

3 に答える 3

4

2 つのオプション。RoleType.Admin は列挙型であるため、RoleType.Admin を int にキャストします。

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

または、BaseViewModel のプロパティを列挙型にすると、変換の必要がなくなります。

public class   BaseViewModel
{
    public RoleType Role { get; set; }
}
@if (Model.Role >= RoleType.Admin) { 
   xx 
} 
于 2012-10-13T07:52:19.747 に答える
0

これを試して:

@if (Model.Role >= (int)RoleType.Admin) { 
   xx 
} 
于 2012-10-13T07:51:01.353 に答える
-1

そのようにしたい場合は、比較時に RoleType.Admin を int に変換する必要があります。

于 2012-10-13T07:49:49.653 に答える