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的行爲起作用。