【问题标题】:Validate checkbox - frontend MVC3验证复选框 - 前端 MVC3
【发布时间】:2011-09-20 04:58:34
【问题描述】:

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

    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 时验证确实有效,但我希望它在到达之前进行验证。

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    为了实现客户端,您可以添加例如 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");
    

    希望对你有帮助。

    【讨论】:

    • 谢谢。自从我发布以来,我已经设法创建了一个非常相似的方法,所以我知道它现在正是我想要的方式!
    【解决方案2】:

    旧的正则表达式怎么样?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多