2016-06-17 3 views
1

Я использую проверку модели для проверки запросов Web API с помощью:Модели проверка в asp.net Web API с зависимыми свойствами

ActionFilterAttribute

Можно ли за то, что правила проверки для имущества модели «B», который зависит от свойства «A». Рассмотрим следующий пример для получения дополнительной осветления

public class ValidationModel 
{ 

    [Required] 
    public int? Id { get; set; } 

    public string Barcode { get; set; } 

    public string BarcodeType { get; set; } 
} 

Приведенная выше модель имеет свойство Id, который необходим, и штрих-код, BarcodeType свойство, которое не является обязательным, можно установить BarcodeType свойство требуется, если и только если существует какое-либо значение в свойство Barcode (если оно не пустое и пустая строка)

+0

Может быть, это помогает http://stackoverflow.com/questions/2009776/asp-net-mvc-validation-dependent-fields –

+1

** [RequiredIf] (http://stackoverflow.com/ a/27666044/2065039) ** Аннотации данных могут быть тем, что вы ищете. –

ответ

2

Существует встроенный механизм для пользовательской проверки в MVC, который запускается автоматически для опубликованных ViewModels, которые реализуют IValidatableObject.

Для примера:

public class ValidationModel : IValidatableObject { 
    // properties as defined above 

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { 
     if (!string.IsNullOrWhiteSpace(Barcode) && string.IsNullOrWhiteSpace(BarcodeType)) { 
      yield new ValidationResult("BarcodeType is required if Barcode is given", new[] { "BarcodeType" }); 
     } 
    } 
} 

Вы можете проверить, была ли проверка успешной в контроллере, проверяя ModelState.IsValid

0

Я хотел бы проверить MVC Foolproof Validation. Его простой в использовании пакет, который предоставит вам несколько способов для выполнения проверки на основе условных оснований. Он предоставляет множество валидаторы, такие как:

  • [RequiredIf]
  • [RequiredIfNot]
  • [RequiredIfTrue]
  • [RequiredIfFalse]
  • [RequiredIfEmpty]
  • [RequiredIfNotEmpty]
  • [ RequiredIfRegExMatch]
  • [RequiredIfNotRegExMatch]

    Он даже работает с проверкой jQuery из коробки. http://foolproof.codeplex.com/

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