如果选择了一个单选按钮,如何应用必填字段验证

时间:2013-01-08 21:23:47

标签: asp.net-mvc validation data-annotations

我正在使用MVC Data Annotation进行客户端验证。

如何实现这个简单的场景:

仅在选择了一个单选按钮时才根据需要标记字段

4 个答案:

答案 0 :(得分:4)

您写道,您正在进行客户端验证,因此实现目标的一种方法是删除/修改附加到您的输入元素的验证规则的简单JavaScript:

$("#YourCheckBox").click(function(){ 
  if($(this).is(':checked')){
      $("#FirstName").rules("add","required")
  } else {
      $("#FirstName").rules("remove","required")
  }
});

您可以在http://docs.jquery.com/Plugins/Validation/rules#.22add.22rules

找到有关验证插件及其功能的更多信息

当然,您可以轻松找到有关jquery unobutrusive验证的更多信息并执行您的变体。但要记住的是,您希望保持客户端和后端验证的一致性,因此如果从模型中删除[必需],则必须检查保存/编辑方法中的值。

答案 1 :(得分:2)

使用foolproof查看是否存在RequiredIf属性

private class Person
{
  [Required]
  public string FirstName { get; set; }

  [Required]
  public string LastName { get; set; }

  public bool Married { get; set; }

  [RequiredIfTrue("Married")]
  public string MaidenName { get; set; }
}

答案 2 :(得分:0)

答案 3 :(得分:0)

由于您没有发布任何代码,我假设您的单选按钮字段的标识为rdbRequired,而您的字段名称为MyField

最初根据需要标记MyField

然后在你的控制器中,这样写:

 public ActionResult Index(MyModel model)
    {
       // If the radio button is not selected, MyField is marked as not required. I mean it is not validated
       if (model.rdbRequired == false)  
       {
            ModelState.Remove("MyField"); 
       }
       if(ModelState.IsValid){
       //do something
       }
       else{
             return View(model);
       }
    }

希望这有助于你