Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 至少应通过asp.net mvc中的自定义验证检查一个单选按钮_C#_Asp.net Mvc_Validation_Data Annotations - Fatal编程技术网

C# 至少应通过asp.net 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

我是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
我的型号代码:

[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我希望选中单选按钮(只有一个可以选中,也是在首次加载页面时,没有选中)。我想确保用户必须检查它们,我想通过自定义验证来完成。因为客户端验证很容易被绕过。