asp.net-mvc - MVC 枚举单选按钮必填字段

标签 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,
    }

当我在 View 上呈现此内容并提交时,我没有选择任何单选按钮。即使它采用 "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);
        }

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

最佳答案

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

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

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

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

关于asp.net-mvc - MVC 枚举单选按钮必填字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28980331/

相关文章:

sql-server - 重命名 Identity 表并导致 EF6 迁移失败

javascript - 将数组从 MVC 传递到 javascript?

asp.net-mvc - ASP.NET MVC。如何创建接受和 multipart/form-data 的 Action 方法

c# - 数据库优先和区域

asp.net - C# - 一次向 AS400 插入多条记录

.net - ConcurrentDictionary 惰性添加或更新

c# - C# 中的 Java Character.charCount

.net - 什么时候应该使用静态 IoC 容器?

c# - 在不使用查询字符串的情况下在 ASP.NET MVC 应用程序中移动时如何保持 Sharepoint 上下文?

asp.net-mvc-4 - 在 umbraco 中出现错误无法找到类型或命名空间名称 'Umbraco'