1

我將項目從MVC2升級到MVC3,並且所有自定義ValidationAttributes都打破了。在模型中的粘結相的某個時刻,它拋出此異常:MVC3 ValidationAttribute break

Exception Details: System.ArgumentNullException: Value cannot be null. 
Parameter name: value 
System.ComponentModel.DataAnnotations.ValidationContext.set_DisplayName(String value) 

我無法弄清楚什麼樣的變化......沒有顯示名稱..

我懷疑IsValid的覆蓋,這理應以某種方式改變,但簽名是相同的。

public override bool IsValid(object value) 
{ 
    .... 
} 

更多信息:

它顯然影響 「AttributeTargets.Class」 屬性,如:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)] 
public sealed class MyValidationAttribute : ValidationAttribute {} 

回答

0

的解決方案是改變AttributeTargets.Class到AttributeTargets.Property和重寫每個驗證程序與給定的屬性一起工作。