验证复选框 - 前端MVC3

时间:2011-06-22 08:56:00

标签: entity-framework validation asp.net-mvc-3 checkbox

我创建了以下自定义属性来帮助我验证必填复选框字段:

    public class CheckboxRequired : ValidationAttribute, IClientValidatable
{
    public CheckboxRequired()
        : base("required") { }

    public override bool IsValid(object value)
    {
        return (bool)value == true;
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        ModelClientValidationRule rule = new ModelClientValidationRule();
        rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
        rule.ValidationType = "mandatory";
        yield return rule;

    }
}

但是,我试图让它触发客户端,而不是当我调用我的ActionResult(if (ModelState.IsValid)

当我调用我的ActionResult时,验证确实有效,但我希望它在到达目前之前进行验证。

我需要做些哪些修改才能在客户端进行验证?

由于

2 个答案:

答案 0 :(得分:3)

为了实现客户端,您可以添加例如jQuery验证器方法和不显眼的适配器(简单示例):

// Checkbox Validation 
jQuery.validator.addMethod("checkrequired", function (value, element) 
{     
      var checked = false;     
      checked = $(element).is(':checked');     
      return checked; 
}, '');  

jQuery.validator.unobtrusive.adapters.addBool("mandatory", "checkrequired");

我希望它有所帮助。

答案 1 :(得分:1)

老好的正则表达怎么样?

[RegularExpression("^(true|True)$", ErrorMessage="Required...")]
public bool AgreeWithTos { get; set; }

接受“true”和“True”,因为javascript和.NET格式的布尔值不同。