【发布时间】:2021-03-02 16:17:08
【问题描述】:
注意事项:
- 我正在使用共享资源来本地化错误消息,它适用于所有 .net 注释属性
- 我在启动类中注入了dataannotation服务来接受共享资源本地化
这是我的审核代码
public string PageName { get; set; } //For custom validation purposes
[Display(Name = "Name")]
[RequiredIf("PageName", "Contacts", ErrorMessage = "This field is required")]
public string PageName { get; set; }
public class RequiredIfAttribute : ValidationAttribute, IClientModelValidator
{
private String PropertyName { get; set; }
private Object DesiredValue { get; set; }
private readonly RequiredAttribute _innerAttribute;
public RequiredIfAttribute(String propertyName, Object desiredvalue)
{
PropertyName = propertyName;
DesiredValue = desiredvalue;
_innerAttribute = new RequiredAttribute();
}
protected override ValidationResult IsValid(object value, ValidationContext context)
{
var dependentValue = context.ObjectInstance.GetType().GetProperty(PropertyName).GetValue(context.ObjectInstance, null);
if (dependentValue != null && dependentValue.ToString() == DesiredValue.ToString())
//if (dependentValue == null || dependentValue.ToString() != DesiredValue.ToString())
{
if (!_innerAttribute.IsValid(value))
{
// if validation result is wrong
return new ValidationResult(ErrorMessage);
}
}
// if validation result is correct
return ValidationResult.Success;
}
public void AddValidation(ClientModelValidationContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
context.Attributes.Add("data-val", "true");
context.Attributes.Add("data-val-requiredIf", ErrorMessage); //Here i need to get the localized message
context.Attributes.Add("data-seed-property", PropertyName);
context.Attributes.Add("data-desired-value", DesiredValue.ToString());
}
}
【问题讨论】:
-
请您点击“接受答案”。
标签: jquery validation asp.net-core