2015-09-30 2 views
0

Я хочу реализовать некоторую условную логику проверки на одном из моих объектов. В основном, то, что я хочу сделать, это проверить поле (используя регулярное выражение) только в том случае, если другое поле в моей сущности имеет определенное значение.Использование CustomValidationAttribute с Entity Framework

Я пытаюсь добавить CustomValidationAttribute на моей компании, но он не делает ничего

[MetadataType(typeof(TemplateActionMetadata))] 
[CustomValidation(typeof(TemplateAction), "validateActionValue")] 
    public partial class TemplateAction 
    { 
     public static ValidationResult validateActionValue(string pValue, ValidationContext vContext) 
     { //this never gets called 
      return ValidationResult.Success; 
     } 
    } 

Я также попытался добавить атрибут на моем поле

public partial class TemplateActionMetadata 
    { 

     [CustomValidation(typeof(TemplateAction), "validateActionValue")] 
     public string ActionValue { get; set; } 
    } 

Теперь он вызывается метод validateActionValue но параметр ValidationContext всегда равен нулю, поэтому я не могу получить значение другого поля, которое мне нужно использовать для реализации моей логики проверки.

ответ

0

В документации msdn я вижу, что класс CustomValidationAttribute имеет свойство Read onlyValidationContext только для чтения.

Это свойство переопределено из базового класса ValidationAttribute.

Поскольку у вас нет контекста, я полагаю, что это свойство возвращает false, по дизайну.

https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute.aspx

Таким образом, вы не можете получить контекст с этим атрибутом. Вы, возможно, придется создать себе пользовательский атрибут, который выполнить ваши потребности

я нашел этот руководящий принцип Microsoft, которые могут помочь вам: https://msdn.microsoft.com/en-us/library/cc488527.aspx

 Смежные вопросы

  • Нет связанных вопросов^_^