IvalidatableObject только в некоторых действиях
-
12-12-2019 - |
Вопрос
У меня есть модель, которая реализует ivalidatLableObject, и поэтому настраиваемая ошибка проверяет метод проверки.
Когда я создаю объект, все в порядке, но когда я пытаюсь редактировать этот объект, я не должен делать эту пользовательскую проверку.
Как я могу узнать из Действия, я называю методом подтверждения, чтобы не сделать проверку?
Обновлено: Это Mi модель:
public class Ingredient : IValidatableObject
{
public int Id { get; set; }
[Required(ErrorMessage = "Required!!")]
public string Name { get; set; }
public virtual List<Product> Products { get; set; }
public Ingredient()
{
Products = new List<Product>();
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
using (var uow = new UnitOfWork())
{
var ingredient = uow.IngredientRepository.Get(i => i.Name ==Name).FirstOrDefault();
if (ingredient != null)
yield return new ValidationResult("Duplicate!!!.", new[] { "Name" });
}
}
}
.
}
Поэтому, когда я создаю ингредиент, я хочу проверить все (атрибуты + ивалы) Но когда я редактирую INGRENDINDING, я хочу только проверять атрибуты (так что я имею в виду Skip Ivalidable) Любой способ узнать, внутри метода для фаванатата, откуда я звоню в проверку?
Спасибо !!!
Решение
Проверьте первичный ключ модели - будь то не ноль :)
Другие советы
Чем больше «MVCish» правильный путь вот у вас на самом деле есть два класса, один для создания метода один для редактирования.Вы можете позвонить в базовый класс для любой общей проверки, что-то, что, потом не поделиться, не будет проверяться здесь.
Если вы не хотите проверять объект, не звоните в Model.IsValid
(или Validate()
, если вы делаете это явно. Не могу ответить на большее значение, не зная подробности о вашей проблеме.