Как мы можем проверить модели, переданные из представлений, в наши API-контроллеры в ASP.NET Core. Есть ли такой инструмент, как FluentValidation или любой подобный подход, который можно настроить для возврата наших ошибок и сообщений обратно в клиентские приложения?Просмотр моделей и проверка правильности в ASP.NET Core
ответ
Вы используете интерфейс IValidatableObject. Затем создайте абстрактный базовый класс и пусть ваши классы наследуют его. Вам нужно будет добавить ссылку на System.ComponentModel.DataAnnotations. Вы также можете добавить вспомогательные методы в базовый класс.
public abstract class ValidatingBase : IValidatableObject
{
public bool IsNullOrEmpty(string property)
{
return string.IsNullOrEmpty(property);
}
#region IValidatableObject
public abstract IEnumerable<ValidationResult> Validate(ValidationContext validationContext);
public IEnumerable<ValidationResult> Validate()
{
var validationErrors = new List<ValidationResult>();
var ctx = new ValidationContext(this, null, null);
Validator.TryValidateObject(this, ctx, validationErrors, true);
return validationErrors;
}
#endregion IValidatableObject
}
Тогда ваш класс, который наследует от выше
public class InsertCompanies : ValidatingBase
{
public string CompanyName { get; set; }
#region ValidatingCommandBase
public override IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (this.IsNullOrEmpty(this.Name))
{
yield return new ValidationResult($"{nameof(this.Name)} field can't be null or empty.", new[] { nameof(this.Name) });
}
if (this.Name?.Length > 100)
{
yield return new ValidationResult($"{nameof(this.Name)} field can't be greater than 100 characters.", new[] { nameof(this.Name) });
}
}
#endregion ValidatingCommandBase
}
Существует не так много ограничений относительно того, что вы можете сделать с помощью данной реализации. Возможно, это жизнеспособный вариант для вас?
Asp.Net Core с радостью назовет метод для вас, дополнительную информацию можно найти по ссылке ниже. https://docs.asp.net/en/latest/mvc/models/validation.html
[HttpPost]
public ActionResult Register(RegisterViewModel model)
{
// if the validation doesn't match then load same view again with errors
if (!ModelState.IsValid)
{
return View(model);
}
}
спасибо Насим, я уже знаю об этом. Я ищу более динамичный и индивидуальный подход, используя библиотеку самородков или лучший способ сделать это. – Coding
- 1. Проверка правильности моделей Rails
- 2. Просмотр моделей Asp.Net MVC
- 3. Проверка правильности моделей Rails при обновлении
- 4. Проверка правильности проверки Asp.net и проверка на стороне сервера
- 5. Проверка правильности регулярных выражений в ASP.Net MVC
- 6. Проверка правильности JavaScript в asp.net C#
- 7. Проверка правильности строки Rails
- 8. Просмотр конкретных моделей в ASP.NET MVC?
- 9. Проверка правильности практики в ASP.NET MVC и ADO.NET Entity Framework
- 10. Идентификатор ASP.NET - Непосредственная проверка правильности валидации
- 11. Просмотр моделей/моделей презентаций
- 12. Проверка правильности выражения
- 13. Проверка правильности и пользовательских обратных вызовов
- 14. Проверка правильности в SQL
- 15. Проверка правильности формы JQuery и проверка CakePHP
- 16. Обнаружение столкновений и проверка правильности
- 17. Проверка ASP.NET MVC 2 для переменных длины или динамических представлений данных и просмотр моделей
- 18. Проверка правильности не работает
- 19. Проверка правильности XML и XML
- 20. Проверка правильности привязки. Silverlight. DataForm
- 21. ASP.NET MVC2 Просмотр моделей Основной вопрос
- 22. Проверка правильности с помощью if
- 23. ASP.Net MVC Создание Просмотр нескольких моделей
- 24. Проверка подлинности ASP.NET 4.6 и ASP.NET Core 1.0
- 25. Проверка на сеанс в ASP.NET Core 1.0
- 26. ASP.NET Core System.TypeLoadException брошен при загрузке Просмотр
- 27. Asp.net core Просмотр компонентов привязка модели
- 28. ModelMetadata.Watermark и MVC Просмотр моделей
- 29. Проверка правильности внешнего ключа Rails
- 30. Проверка правильности правильности - подтверждение не правильно
Похоже, что FluentValidation доступен для .NET Core? Вот пример [здесь] (https://github.com/JeremySkinner/FluentValidation/issues/98#issuecomment-249701088). –