MVC5单选按钮组和角色

时间:2015-04-22 22:32:01

标签: c# asp.net-mvc enums asp.net-mvc-5 radio-button

我遇到了将两个单选按钮绑定到我在模型中指定的enum个角色的问题。在注册时选择角色,当我设置角色并提交表单时,即使我单击另一个单选按钮获取{{1}的角色,也只会将Provider的第一个角色传递给控制器​​。 1}}。

我已经在我的大部分代码上调试并设置了断点,但我只看到Receiver发送给控制器的角色。 问题:如何将我的枚举正确绑定到我的单选按钮?或者我应该采用不同的方法吗?

注意:注册模型的其余部分正确绑定,其他所有内容都已提交并正确插入到数据库中,但角色除外。

MODEL

Provider

VIEW(仅限单选按钮的相关代码)

    public enum AppRoles
    {
        Provider,
        Receiver,
        Admin
    }

    public class RegisterViewModel
    {
        [Required]
        [EmailAddress]
        [Display(Name = "Email")]
        public string Email { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }

        [Required]
        [Display(Name = "Role")]
        public AppRoles Role { get; set; }
    }

控制器

<div class="form-group">
      <div class="col-md-12 text-center">
            <h3>Select Your Account Type</h3>
            <div class="btn-toolbar" data-toggle="buttons">
                <label class="btn btn-primary">
                    Service Receiver
                    @Html.RadioButtonFor(m => m.Role, AppRoles.Receiver, "Receiver")
                 </label>

                 <label class="btn btn-primary">
                    Service Provider
                    @Html.RadioButtonFor(m => m.Role, AppRoles.Provider, "Provider")
                  </label>

            </div>
     </div>

1 个答案:

答案 0 :(得分:-1)

输入的值必须是整数。当它与请求一起发送时,它将从整数转换为枚举。你应该改变你的观点,如:

@Html.RadioButtonFor(m => m.Role, (int)AppRoles.Receiver)

另请注意,由于您发送的值无法解析,因此将其设置为枚举的默认值,即提供者。