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

时间:2010-04-19 06:33:41

标签: asp.net-mvc

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

<%=Html.RadioButton("Role", Role.Viewer)%><%= .Role.Viewer%>
        <%=Html.RadioButton("Role",.Role.Reporter)%><%= Role.Reporter%>
        <%=Html.RadioButton("Role",Role.User)%><%= Role.User%>

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

1 个答案:

答案 0 :(得分: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%>

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

public enum Role {
    Viewer = 1,
    Reporter = 2,
    User = 3
}

<强> [更新]

根据您的评论,我得到您想要将数据库值绑定到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%>

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