Пользовательские атрибуты для валидации в asp.net-mvc

Для того чтобы реализовать пользовательский атрибут, нужно наследоваться от ValidationAttribute и переопределить свой метод IsValid. Реализуем атрибут который будет проверять дублирующие объекты по определенному полю.

  1. using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    
    namespace WebApp.ValidationAttributes
    {
        public class CheckDublicatesAttribute : ValidationAttribute
        {
            public CheckDublicatesAttribute(string field = "Id")
            {
                _field = field;
            }
            private string _field;
            public override bool IsValid(object value)
            {
                List<object> list = ((IEnumerable)value).Cast<object>().ToList();
                if (list.GroupBy(x => x.GetType().GetProperty(_field).GetValue(x, null)).Any(x => x.Count() > 1))
                    return false;
                return true;
            }
        }
    }
    
  2. Применяем так:
    [CheckDublicates(ErrorMessage = "Нельзя указать одинаковые фильтры")]
    public List<Filters> Filters { get; set; }
    
По теме:
Выполняем get запрос по расписанию c#

Напишем простенькую программу, которая будет выполнять get запрос по истечению определенного интервала времени. class Program { private static Timer _timer; Read more

Выполняем действие по расписанию (asp.net, c#)

Раньше я писал программку, которая выполняла get запрос по расписанию, но так же можно написать обычный HttpModule, который будет делать Read more

Выбираем технологии и инструменты для разработки веб приложений

1 Выбор и настройка инструментов для разработки фронтенда (только самые важные): 1.1 Twitter bootstrap — фреймворк позволяет писать качественную верстку Read more

Делаем водяной знак на картинке (c#, .net)

Нанесем несколько раз картинку watermark на другую картинку. public void DrawWatermark(string watermarkImagePath, System.Drawing.Image image) { using (System.Drawing.Image watermarkImage = System.Drawing.Image.FromFile(watermarkImagePath)) Read more

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *