2

所以,我使用的是 ASP.NET MVC 3 和 Entity Framework 4.1(代码优先)。

我有这样的课:

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

范围验证正确触发。但是,例如,在某些情况下,我想更改 Age 属性的范围。或者甚至将其关闭。我怎么能在不改变我的模型类的情况下做到这一点?这有可能以编程方式进行吗?

4

3 回答 3

1

您可以使用 IValidatableObject 接口并定义自定义验证规则。

请参阅我的答案:

在表单 mvc 3 中搜索另一个字段时,使用数据注释使一个字段成为必填字段

它通常只是实现接口并确定何时执行规则的问题。

于 2011-09-22T19:13:38.173 回答
1

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

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

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

DataContext.Configuration.ValidateOnSaveEnabled = false;

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

于 2012-09-11T14:32:52.540 回答
0

是的,可以以编程方式注入验证器。更改现有验证器会带来单独的问题,因为某些属性是只读的,因此您可能必须删除并替换现有验证器。

您可以按照我对这个问题的回答添加一个类来处理验证器。

于 2011-09-22T18:54:19.557 回答