Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用IClientModelValidator进行验证_Jquery_Asp.net Core_Asp.net Core Mvc_Asp.net Core 1.0 - Fatal编程技术网

Jquery 使用IClientModelValidator进行验证

Jquery 使用IClientModelValidator进行验证,jquery,asp.net-core,asp.net-core-mvc,asp.net-core-1.0,Jquery,Asp.net Core,Asp.net Core Mvc,Asp.net Core 1.0,在以前的版本(RC1)中,我使用接口IClientModelValidator验证/比较密码,并使用“ModelClientValidationEqualToRule”类确认密码,如下所示 public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ClientModelValidationContext context) { String strMsg = AccessLoca

在以前的版本(RC1)中,我使用接口
IClientModelValidator
验证/比较密码,并使用“
ModelClientValidationEqualToRule
”类确认密码,如下所示

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ClientModelValidationContext context)
    {
        String strMsg = AccessLocalization.GetString(_resourceID);

        var modelClientValidationEqualToRule = new ModelClientValidationEqualToRule(strMsg, _OtherPropertyName);

        yield return modelClientValidationEqualToRule;
    }
但是,现在我使用的是.Net Core 1.0,该接口已完全更改,并且没有可用的“
ModelClientValidationEqualToRule
”类

在阅读之后,我知道验证将在数据属性的帮助下完成。到目前为止,我已经实现了必填字段属性、范围字段属性、电子邮件地址属性等

但是,我不清楚如何验证密码和确认密码


在此感谢您的帮助

IClientModelValidator只有一个方法要实现,这里显示的示例来自一个自定义EnforceTrueValidator,我使用它有条件地强制检查注册页面上的复选框(如果存在所需的注册协议)。此方法添加了所需的数据属性,以连接客户端的不引人注目的验证

    public void AddValidation(ClientModelValidationContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException(nameof(context));
        }

        CheckForLocalizer(context);
        var errorMessage = GetErrorMessage(context.ModelMetadata.GetDisplayName());
        MergeAttribute(context.Attributes, "data-val", "true");
        MergeAttribute(context.Attributes, "data-val-enforcetrue", errorMessage);
        MergeAttribute(context.Attributes, "data-val-other", "#" + OtherProperty);
    }
您可以看到完整的类,并且还必须添加到页面以进行自定义客户端验证的自定义js是


在我的例子中,“other”属性只是一个布尔值,我使用它来确定是否应该应用此验证器,因为我在多租户场景中使用它,并且并非所有租户都可以强制执行注册协议,如果租户已经填充了注册协议,我将布尔值设置为true

为什么您仍然使用RC2?我会尽力帮助您,但我认为RC2和1.0之间也有变化。最好将您的项目迁移到1.0,然后重新考虑任何问题以使其正常工作,而不是尝试在RC2上解决问题,然后可能需要在1中再次解决这些问题。0@JoeAudette哦。。对不起,我打错了。我正在使用.NETCore1.0本身。我已经更新了我的问题:您是自己实现自定义验证器,还是只是尝试使用内置的比较验证器?只要页面中包含jquery.validate.unobtrusive.min.js,内置的比较验证器就应该可以与客户端验证一起工作。如果您正在实现自定义验证器,我可以向您展示一个如何实现的示例IClientModelValidator@JoeAudette.. 好的。。我会很高兴的!自定义客户端验证的链接已关闭。@Taraz感谢您让我知道,我已修复了链接,文件已移动到其他项目中。
    public void AddValidation(ClientModelValidationContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException(nameof(context));
        }

        CheckForLocalizer(context);
        var errorMessage = GetErrorMessage(context.ModelMetadata.GetDisplayName());
        MergeAttribute(context.Attributes, "data-val", "true");
        MergeAttribute(context.Attributes, "data-val-enforcetrue", errorMessage);
        MergeAttribute(context.Attributes, "data-val-other", "#" + OtherProperty);
    }