【问题标题】:Custom Validation attribute is not firing when the model property is called调用模型属性时未触发自定义验证属性
【发布时间】:2015-11-20 16:07:13
【问题描述】:

我创建了一个自定义属性来检查密码复杂性,问题是它在我第一次运行代码时调用,之后如果我更改复杂性,即使刷新会话也不会注册该属性。

我在名为 password 的属性上调用它 在 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...
}

Password 属性用于使用用户模型的更改密码表单。我认为查看代码没有必要显示。任何人都可以指导如何在每次调用 Password 属性时触发它。

【问题讨论】:

  • 说不开火是什么意思?您的属性的 IsValid 方法没有触发?
  • 我假设在任何地方使用密码属性时都应该调用它。
  • 你能举一些不工作但你认为它应该工作的例子吗?
  • 你在global.asax注册了吗?
  • @StephenMuecke:是的,我已经在 global.asax 中注册了它。

标签: asp.net-mvc model-view-controller custom-attributes custom-attribute


【解决方案1】:

我相信数据注释会缓存在模型上。因此,如果您在幕后执行某些操作,以便 GetRegex() 根据您在应用程序中执行的操作而更改,它可能不会反映在模型上的任何新验证尝试中。您可能需要创建自己的 MetadataProvider 来自定义 DataAnnotationsModelMetadataProvider 的行为

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多