将失败的请求验证冒泡到MVC中的控制器



我不想禁用验证,但向用户显示消息会很好。虽然我认为用户不太可能有合法的需要包括&amp在文本字段中,我可以看到有人在自由文本字段中键入以<开头的内容;。

是否有一种方法可以检测是否会引发验证异常,并将其显示为验证消息?

以下是我解决此问题的方法:

  1. 创建一个验证规则,比如potentiallyDangerousRequestRule:

    var potentiallyDangerousRequestRegex = /[<>]|&#/, // <, >, &#
        potentiallyDangerousRequestErrorMessage = 'The error message';
    $.validator.addMethod('potentiallyDangerousRequestRule', function (value) {
        if (value == '')
            return true;
        return !potentiallyDangerousRequestRegex.test(value);
    }, potentiallyDangerousRequestErrorMessage);
    $.validator.unobtrusive.adapters.addBool('potentiallyDangerousRequestRule');
    
  2. 对要验证的form元素调用validate方法:

    $('form').validate({errorClass: 'input-validation-error'});
    
  3. 将规则添加到元素中,例如所有文本输入和文本区域:

    $('input:text, textarea').each(function () {
        $(this).rules('add', { potentiallyDangerousRequestRule: true });
    });
    

在应用规则之前,请确保在表单上调用validate方法。

最新更新