asp.net mvc 中至少应通过自定义验证检查一个单选按钮

At least one radio button should be checked through custom validation in asp.net mvc

我是 MVC 框架的新手。我有 2 个单选按钮,我希望至少选中一个。我想通过自定义验证来完成,需要帮助吗?

字段为"usWorkPermit":

我的查看代码:

Do you have US Work Visa ?
@Html.RadioButtonFor(m => m.usWorkPermit,"True") Yes I have
@Html.RadioButtonFor(m => m.usWorkPermit, "False") No I don't

我的型号代码:

[UsWorkPermitValidation]
public Boolean usWorkPermit { get; set; }

我的控制器代码:

[HttpPost]
public ActionResult Index(Models.JobApplication jobApplication)
{
    if (ModelState.IsValid)
    {
    }
    return View();
}

我创建了不完整的自定义验证器。我想问一下如何强制选中至少一个单选按钮??

public class UsWorkPermitValidation : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        // check at least one radio button is checked.
    }
}

如何获取自定义验证器上每个单选按钮的值?如果我知道那么我可以轻松地进行检查??

你可以试试这个,对我有用

@Html.RadioButtonFor(m => m.usWorkPermit, true , new {@required = "true"}) //Yes I have
@Html.RadioButtonFor(m => m.usWorkPermit, false) //No I don't

根据我的说法,不需要为此使用自定义验证器

为什么要浪费时间,因为人们已经浪费了时间来让这对我们来说变得容易。尝试改用不引人注目的 js。

class UsWorkPermitValidation
{
  [Required(ErrorMessage = "Your error message")]
  public Boolean usWorkPermit { get; set; }
}

在你的view.cshtml

@Html.Label("Yes, I've")
@Html.RadioButtonFor(model => model.usWorkPermit, "Yes")
@Html.Label("No, I don't Have")
@Html.RadioButtonFor(model => model.usWorkPermit, "No")

并在 bundle/current 视图中添加以下 jquery 脚本文件的引用。

<script src="~/Scripts/jquery-3.1.1.min.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

这是它的快照 运行。