public void Validate(T model, IValidationContext context) { if (IsNullable) { if (model == null) { if (Presence == Presence.Required) { context.AddError(RequiredErrorId, true); } return; } if (Presence == Presence.Forbidden) { context.AddError(ForbiddenErrorId, true); return; } } for (var i = 0; i < CommandScopes.Count; ++i) { CommandScopes[i].Validate(model, context); if (context.ShouldFallBack) { return; } } }
/// <summary> /// Проверяет длину строки, либо массива, указанного в параметре <paramref name="value"/> /// сравнивая её с минимальной длиной, указанной в свойстве <see cref="Length"/>. /// </summary> /// /// <remarks> /// Если длина объекта миньше, чем указанное число, то в валидационный /// контекст добавляется сообщение об ошибке, указанное в свойстве <see cref="Message"/>. /// /// Если значение проверяемого объекта равно <c>null</c>, то валидация всегда /// проходит успешно. Используйте <see cref="RequiredValidator"/>, /// если хотите проверить, имеет ли объект значение. /// /// В качестве ключей для ошибок выступает пустая строка. /// </remarks> /// /// <param name="value">Проверяемый объект.</param> /// <param name="context">Валидационный контекст.</param> /// /// <exception cref="InvalidOperationException"><see cref="Length"/> имеет отрицательное значение.</exception> /// <exception cref="InvalidOperationException"> /// <paramref name="value"/> задан, но не является строкой или массивом. /// </exception> public void Validate(IValidationContext context, object value) { if (Length < 0) { throw new InvalidOperationException( String.Format(Resources.Strings.LengthValidatorNegativeLength, GetType().Name, Length)); } if (value == null) { return; } var str = value as string; var arr = value as Array; int num = str != null ? str.Length : arr != null ? arr.Length : -1; if (num == -1) { throw new InvalidOperationException( String.Format(Resources.Strings.LengthValidatorInvalidObject, GetType().Name, value.GetType().Name)); } if (num < Length) { context.AddError(String.Format(Message ?? Resources.Strings.MinLengthValidatorMessage, Length)); } }
/// <summary> /// Проверяет указанную в параметрах <paramref name="obj"/> строку /// или объект. Валидация завершается успешно, если значение объекта не равно <c>null</c> /// и не равно пустой строке (если объектом является строка и свойство <see cref="AllowEmptyStrings"/> /// имеет значение <c>false</c>). /// </summary> /// /// <remarks> /// В качестве включей ошибок выступает пустая строка. /// </remarks> /// /// <param name="obj">Проверяемый объект.</param> /// <param name="context">Валидационный контекст.</param> public void Validate(IValidationContext context, object obj) { var message = Message ?? Resources.Strings.PresenceValidatorMessage; if (obj == null) { context.AddError(message); } var str = obj as string; if (str != null) { if (!AllowEmptyStrings && str.Trim().Length == 0) { context.AddError(message); } } }
/// <summary> /// Проверяет заданный <paramref name="obj"/> на корректность, /// используя делегат, заданный в свойстве <see cref="Delegate"/>. /// </summary> /// /// <remarks> /// Если валидация завершилась неудачей, то в валидационный /// контекст добавляется ошибка с сообщением, указанным в свойстве /// <see cref="Message"/>. /// /// В качестве ключей для ошибок выступает пустая строка. /// </remarks> /// /// <param name="obj">Проверяемый объект.</param> /// <param name="context">Валидационный контекст.</param> /// <exception cref="InvalidOperationException">Свойство <see cref="Delegate"/> не задано.</exception> public void Validate(IValidationContext context, object obj) { if (Delegate == null) { throw new InvalidOperationException("Delegate can not be null"); } if (!Delegate(obj)) { context.AddError(Message); } }
private void Validate(IEnumerable <Employee> employees, IValidationContext validationContext) { foreach (var e in employees) { var annualSalary = e.AnnualSalary; if (annualSalary < 0M) { validationContext.AddError($"{nameof(annualSalary)} must not be a negative decimal, was: {annualSalary}"); } if (!annualSalary.IsWholeNumber()) { validationContext.AddError($"{nameof(annualSalary)} must be a whole number, was: {annualSalary}"); } if (String.IsNullOrWhiteSpace(e.FirstName)) { validationContext.AddError($"{nameof(e.FirstName)} must not be empty"); } if (String.IsNullOrWhiteSpace(e.LastName)) { validationContext.AddError($"{nameof(e.LastName)} must not be empty"); } if (e.PaymentStartDate == null) { validationContext.AddError($"{nameof(e.PaymentStartDate)} payment period must be specified and use the following date range format: DD MM - DD MM"); } if (e.SuperRate < 0M || e.SuperRate > 0.50M) { validationContext.AddError($"{nameof(e.SuperRate)} must be between 0% and 50% inclusive"); } } }
/// <summary> /// Проверяет строковое представление указанного объекта на /// соответствие с указанным в свойстве <see cref="Pattern"/> /// регулярным выражением, которое должно соответствовать всей строке. /// </summary> /// /// <remarks> /// Если строковое представление удовлетворяет <c>String.IsNullOrEmpty</c>, /// то валидация всегда проходит успешно. Используйте <see cref="RequiredValidator"/>, /// если хотите проверить, имеет ли объект значение. /// /// В качестве ключей для ошибок выступает пустая строка.</remarks> /// /// <param name="obj">Проверяемый объект.</param> /// <param name="context">Валидационный контекст.</param> public void Validate(IValidationContext context, object obj) { var input = Convert.ToString(obj, CultureInfo.CurrentCulture); if (string.IsNullOrEmpty(input)) { return; } var match = Regex.Match(input, Pattern); if (!match.Success || match.Index != 0 || match.Length != input.Length) { context.AddError(String.Format(Message ?? Resources.Strings.RegularExpressionMessage, Pattern)); } }
public void Validate(IValidationContext validationContext) { for (int i = 0; i < Episodes.Count; i++) { var episode = Episodes[i]; if (Episodes.FirstOrDefault(e => e.Title == episode.Title) != episode) { validationContext.AddError( $"[{i}].{nameof(episode.Title)}", "NonUniqueTitle", $"Episode {episode.Number} has non unique Title field"); } } }
private void SaveEpisode(Episode episode) { int foundActorsCount = _dbContext.Actors .Select(a => a.Id) .Intersect(episode.ActorIds) .Count(); if (foundActorsCount != episode.ActorIds.Length) { _validationContext.AddError( nameof(episode.ActorIds), "HasUnknownActors", $"Episode {episode.Number} has unknown actors"); } _dbContext.Episodes.Add(episode); }
private static void ValidateKeys(IValidationContext context, IEnumerable <string> keys, string component) { if (keys == null) { return; } foreach (var key in keys) { if (!KeyRegex.IsMatch(key)) { ValidationError error = new ValidationError(ErrorReason.Format, context.PathString, string.Format(SRResource.Validation_ComponentsKeyMustMatchRegularExpr, key, component, KeyRegex.ToString())); context.AddError(error); } } }
/// <summary> /// Проверяет указанную в <paramref name="value"/> дату на корректность. /// </summary> /// /// <param name="value">Проверяемая дата</param> /// <param name="context">Валидационный контекст.</param> /// /// <exception cref="InvalidOperationException"> /// Параметр <paramref name="value"/> задан, но не является экземпляром типа <see cref="DateTime"/>. /// </exception> public void Validate(IValidationContext context, object value) { if (value == null) { return; } if (!(value is DateTime)) { throw new InvalidOperationException( String.Format(Resources.Strings.SqlDateTimeValidatorInvalidObject, GetType(), value.GetType())); } var dateTime = (DateTime)value; var isValid = ((dateTime >= (DateTime)SqlDateTime.MinValue) && (dateTime <= (DateTime)SqlDateTime.MaxValue)); if (!isValid) { context.AddError(Message ?? Resources.Strings.SqlDateTimeValidatorMessage); } }
public void Validate(IValidationContext context) { context.AddError(KeyName, "asdsd"); }
public void Validate(IValidationContext context) { context.AddError(string.Empty, "Hello!"); }
/// <summary> /// Helper method to simplify validation rules /// </summary> public static void CreateError(this IValidationContext context, string ruleName, string message) { OpenApiValidatorError error = new OpenApiValidatorError(ruleName, context.PathString, message); context.AddError(error); }
public void Validate(IValidationContext context) { context.AddError("asdasd", "Hello"); }