如何根据枚举值检查单选按钮

lea*_*ing 5 asp.net-mvc

我有一个枚举.根据模型带来的价值,我必须检查单选按钮.我怎样才能做到这一点?

<%=Html.RadioButton("Role", Role.Viewer)%><%= .Role.Viewer%>
        <%=Html.RadioButton("Role",.Role.Reporter)%><%= Role.Reporter%>
        <%=Html.RadioButton("Role",Role.User)%><%= Role.User%>
Run Code Online (Sandbox Code Playgroud)

我的枚举将具有数字1到3,例如,如果选择的枚举值是1,我如何检查Role.Viewer?

Pru*_*der 14

您可以将枚举值强制转换为int而不会出现任何问题:

<%=Html.RadioButton("Role", (int)Role.Viewer)%><%= (int)Role.Viewer%>
<%=Html.RadioButton("Role", (int)Role.Reporter)%><%= (int)Role.Reporter%>
<%=Html.RadioButton("Role", (int)Role.User)%><%= (int)Role.User%>
Run Code Online (Sandbox Code Playgroud)

请记住,枚举定义隐式具有从0开始的索引.如果您想要更多控制,可以自己手动将int值分配给枚举:

public enum Role {
    Viewer = 1,
    Reporter = 2,
    User = 3
}
Run Code Online (Sandbox Code Playgroud)

[更新]

根据您的评论,我得到您想要将数据库值绑定到radiolist.您可以使用以下代码执行此操作:

<%=Html.RadioButton("Role", (int)Role.Viewer, Model.Role == Role.Viewer)%><%= (int)Role.Viewer%>
<%=Html.RadioButton("Role", (int)Role.Reporter, Model.Role == Role.Reporter)%><%= (int)Role.Reporter%>
<%=Html.RadioButton("Role", (int)Role.User, Model.Role == Role.User)%><%= (int)Role.User%>
Run Code Online (Sandbox Code Playgroud)

此代码假定数据库值与Model.Role同步,但您可以将其替换为您自己的逻辑.并且有更优雅的方式来编写radiobutton枚举,但只有3个无线电选项,坚持这个解决方案是安全的.