我使用枚举类显示单选按钮。
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/