Вопрос

У меня есть модель, которая реализует 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(), если вы делаете это явно. Не могу ответить на большее значение, не зная подробности о вашей проблеме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top