2013-07-29 4 views
0

Я новичок в ValidationAttributes. Я хотел бы разработать подкласс ValidationAttribute (MustExistAttribute), который работает одним из двух способов, в зависимости от ситуации во время выполнения. Например, у меня есть класс RECORD со свойством KEY, и я хочу, чтобы тест проверки был чем-то вроде: «Посмотрите этот KEY в базе данных и посмотрите, существует ли он».ValidationAttribute с условным значением аргумента

Однако этого недостаточно. Мне также нужно проверить другое свойство (RECORD.IsNew). Тогда, если это также верно, тот факт, что этот KEY существует, является ошибкой, но если RECORD.IsNew является ложным, тогда проверка должна пройти. Другими словами, переопределение атрибута IsValid требует доступа не только к значению, которое система автоматически предоставляет (KEY), но также к RECORD (или RECORD.IsNew).

Возможно ли это?

ответ

0

Я думаю, что ответ на мой вопрос «Нет». Но есть обход.

В точке, где были применены в валидация, то есть, где я обычно есть что-то вроде

if(ModelState.IsValid)

, я могу добавить любой тест, который я хочу, а затем использовать что-то вроде

ModelState.AddModelError("KEY", "The database already has a record for the new KEY.");

AddModelError установит IsValid в значение false, поэтому я могу повторно протестировать и перейти оттуда. Структура рассматривает мою новую ошибку так же, как и все остальные, связывая ее с свойством KEY.

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