Jquery 使用IClientModelValidator进行验证
在以前的版本(RC1)中,我使用接口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
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);
}