2

因此,我使用ASP.NET MVC 3和实体框架4.1(代码优先)。如何以编程方式打开/关闭数据注释验证属性

我有这样一个类:

public class Person 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    [Range(18, 99)] 
    public int Age { get; set; } 
} 

范围验证正确解雇。但是,例如,在某些情况下,我想更改Age属性的范围。甚至关掉它。我怎么能做到这一点,而不改变我的模型类?这可能是编程式的吗?

+0

你能说清楚'某些情况'是什么意思吗?你的意思是不同的行为? –

+0

示例:用户可以获得创建14岁的人的授权。要明确,我的问题不是解决有问题的问题,而是更多关于如何处理MVC体系结构问题。 – iuristona

回答

1

我刚刚意识到这种情况下的解决方案。

例如,用户可以授权创建一个14岁的人。

之前保存的模型,我们可以调用DataContext.GetValidationErrors()和推断,如果唯一的错误验证的是,我们要禁用,然后设置

DataContext.Configuration.ValidateOnSaveEnabled = FALSE;

所以,这样我们就可以保存模型。

0

是的,可以以编程方式注入验证器。改变现有的验证器会出现单独的问题,因为某些属性是只读的,所以您可能需要删除并替换现有的验证器。

您可以按照我的回答to this question添加一个类来处理验证器。

相关问题