我创建了以下自定义属性来帮助我验证必填复选框字段:
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时,验证确实有效,但我希望它在到达目前之前进行验证。
我需要做些哪些修改才能在客户端进行验证?
由于
答案 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格式的布尔值不同。