asp.net - 单独程序集中的 IValidatableObject

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

您好,我正在尝试在 ASPNET MVC 4 项目上实现 IValidableObject 接口(interface)。我的模型位于不同的程序集中,当框架执行我的验证方法时,它没有显示validationContext并显示此错误: validationContext 无法通过嵌套类型“AS.Core.Model.Horario”访问外部类型“AS.Core.Model.Horario.Validate”的非静态成员

很明显,问题与单独的程序集有关,但我不知道该怎么做才能使这项工作正常进行,有人可以帮助我吗?

这是我的代码:

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

最佳答案

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

关于asp.net - 单独程序集中的 IValidatableObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486864/

相关文章:

c# - 如何将服务器数据库复制到我的本地机器以生成脚本

asp.net-mvc - 到达/访问 MVC 中 IEnumerable 对象中的特定索引

javascript - 在 JS 变量中存储表行数

asp.net-mvc - MVC 3 引用自动更新到 MVC 4

asp.net-mvc - Structuremap 不适用于 MVC4

c# - global.asax 中的 Application_OnStart 是否适用于缓存页面?

c# - 在 GridView 中,我的 Roe 未更新或删除

c# - 如何从生产服务中删除 OData 内部错误

asp.net-mvc - 在 MVC 中使用 dotnet core 时如何删除 ErrorViewModel

c# - 在 asp.net mvc 中应该在哪里创建/操作 View 模型?