mvc枚举单选按钮必填字段

时间:2015-03-11 06:56:11

标签: asp.net-mvc asp.net-mvc-4 c#-4.0 model-view-controller

我正在使用枚举类显示单选按钮。

public enum RegisteredBy
    {
        [Display(Name = "Customer", Order = 0)]
        H,
        [Display(Name = "Dealer/Contractor", Order = 1)]
        S,
    }

当我在我的视图和提交中呈现此内容时,我没有选择任何单选按钮。即使它将"H"作为默认值。因此它没有显示任何验证消息。

  @using ConsumerProductRegistration.Models;
    @using ProductRegistration.Models.Enums;
    @model ProductRegistration.Models.Registration

        @Html.RadioButtonFor(m => m.RegisteredBy, RegisteredBy.H, new { id = "RegisteredByCustomer" })
        @Html.Label("Customer")<br />
        @Html.RadioButtonFor(m => m.RegisteredBy, RegisteredBy.S, new { id = "RegisteredByDealer" })
        @Html.Label("Dealer/Contractor")
 @Html.ValidationMessageFor(m => m.RegisteredBy)

在模特:

public class Registration
    {
        [Required(ErrorMessage = "Select at least one option")]
        [Display(Name = "Registered by*")]
        public RegisteredBy RegisteredBy { get; set; }
}

在视图中:

public ActionResult CustomerInfo(Registration registration)
        {
            return View(registration);
        }

请建议我。如果用户没有选择,我们应该显示错误信息。

1 个答案:

答案 0 :(得分:0)

枚举元素的默认基础类型是int。默认情况下,第一个枚举数的值为0,每个连续枚举数的值增加1。

当您没有选择任何内容并发布表单时,默认值0将自动设置(默认值为整数)。

在这种情况下,您可以使用[Required]属性使您的属性为空,当选择任何内容时,该属性将null作为值发送。并且由于它使用[Required]属性进行修饰,因此会为您提供必要的字段验证错误。

[Required]
public RegisteredBy? RegisteredBy { get; set; }