IValidatableObject在单独的程序集中

时间:2012-05-07 18:04:48

标签: asp.net asp.net-mvc asp.net-mvc-3 validation ivalidatableobject

您好我试图在ASPNET MVC 4项目上实现IValidableObject接口。我的模型在一个不同的程序集中,当框架执行我的validate方法时,它没有显示validationContext并显示我的错误: validationContext无法访问外部类型的非静态成员' AS.Core.Model.Horario.Validate'通过嵌套类型' AS.Core.Model.Horario'

很清楚问题是关于单独的程序集,但我不知道如何做到这一点,任何人都可以帮助我吗?

这是我的代码:

public class Horario : IValidatableObject
{
    [Range(0, 6, ErrorMessage = "Dia inválido")]
    public byte Dia { get; set; }

    [DataType(DataType.Time, ErrorMessage = "Horário de início inválido")]
    public TimeSpan? HorarioInicio { get; set; }

    [DataType(DataType.Time, ErrorMessage = "Horário fim inválido")]
    public TimeSpan? HorarioFim { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (HorarioInicio != null && HorarioFim == null || HorarioFim != null && HorarioInicio == null)
        {
            yield return new ValidationResult("Horário inválido");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您需要编写将成为IValidatableObject的ViewModel,并在验证后将数据从控制器中移动到您的业务模型中。