1

我已经创建了一个自定义属性来检查密码的复杂性,问题在于它在我第一次运行代码时调用,之后如果我改变它的复杂性即使会话已刷新,也会注册该属性。当模型属性被调用时,自定义验证属性不会触发

我打电话它的属性命名密码 在的usermodel

[ComplexPassword()] 
    public String Password { get; set; } 

自定义属性在这里。

public class ComplexPassword : RegularExpressionAttribute 
{ 
    public ComplexPassword() 
     : base(GetRegex()) 
    { 
     T = Localizer.CaptionInstance; 

    } 
    private Localizer.CaptionDelegate T { get; set; } 
Some Logic here... 
} 

密码属性,其中使用用户模型改变的密码形式使用。我认为查看代码不是必需的。任何人都可以指导如何在每次致电密码属性时触发它。

+0

通过说不开火,意味着什么?您的属性的“IsValid”方法未触发? –

+0

我假设它应该在任何地方使用密码属性时调用。 –

+0

你能举一些不工作的例子,但你认为它应该工作吗? –

回答

1

我相信数据注解会缓存在模型上。因此,如果您在幕后做某些事情,以便GetRegex()根据您在应用中执行的操作进行更改,则可能不会反映在模型上的任何新的验证尝试中。您可能需要创建自己的MetadataProvider,以使DataAnnotationsModelMetadataProvider的行为起作用。