Pregunta

Tengo un modelo que implementa IValidatlableObject y, por lo tanto, realiza una verificación de errores personalizada a través del método Validate.

Cuando creo un objeto, todo está bien, pero cuando intento editar ese objeto, no quiero hacer esa validación personalizada.

¿Cómo puedo saber desde qué acción estoy llamando al método Validar para no realizar la validación?

ACTUALIZADO:Este es mi modelo:

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" });
        }


    }
}

}

Entonces, cuando creo un ingrediente, quiero validar todos los (atributos + ivalidatables), pero cuando edito un ingrendador solo quiero validar los atributos (por lo que me refiero a omitir ivalidatable) cualquier método para saber, dentro del método inalidable, desde donde estoy llamar validar?

¡¡¡Gracias!!!

¿Fue útil?

Solución

Compruebe la clave principal del modelo, ya sea que no sea NULL :)

Otros consejos

Cuanto más correcta "Mvcish" de forma correcta aquí es que realmente tiene dos clases, una para el método CREATE uno para la edición.Puede llamar a una clase base para cualquier validación compartida, cualquier cosa que no sea compartida no se vería aquí.

Si no desea validar un objeto, no llame Model.IsValid (o Validate(), si lo haces explícitamente.No puedo responder más que eso sin conocer más detalles sobre su problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top