C# 至少应通过asp.net mvc中的自定义验证检查一个单选按钮
我是MVC框架的新手。我有两个单选按钮,我想至少有一个应该被选中。我想通过自定义验证来完成,需要帮助吗 该字段为“美国工作许可证”: 我的视图代码:C# 至少应通过asp.net mvc中的自定义验证检查一个单选按钮,c#,asp.net-mvc,validation,data-annotations,C#,Asp.net Mvc,Validation,Data Annotations,我是MVC框架的新手。我有两个单选按钮,我想至少有一个应该被选中。我想通过自定义验证来完成,需要帮助吗 该字段为“美国工作许可证”: 我的视图代码: 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 我的型号代码: [UsWorkPerm
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; }
}
在your 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>
这是它运行的快照
您是否尝试使用
[必需]
?[必需]不处理我的案例。根据“单选按钮”的定义,您不希望选中“至少一个”单选按钮,而是希望选中“恰好一个”单选按钮。换句话说,在一组单选按钮中,选中两个单选按钮是荒谬的。这就是复选框的作用。@yogihosting:try@MikeNakis我希望选中单选按钮(只有一个可以选中,也是在首次加载页面时,没有选中)。我想确保用户必须检查它们,我想通过自定义验证来完成。因为客户端验证很容易被绕过。