2011-01-13 13 views
1

Ich wurde auf einen sehr schönen Artikel verwiesen, der zeigt, wie man einen benutzerdefinierten Validator von Anfang bis Ende erstellt. Mein einziges Problem ist, dass dies nur auf einzelne Felder funktioniert: http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspxASP.NET MVC 2: Benutzerdefinierte Validierung, Zugriff auf das gesamte Modell?

Was ist, wenn ich gegen 2 oder mehr Eigenschaften in meinem Modell validieren muss? Wie kann ich mein gesamtes Model in den Validator geben?

HINWEIS: Um es klar zu sagen, ich möchte nicht auf das Post-Back-Verfahren des gesamten Modells zurückgreifen müssen ... das würde den Zweck dieser Methode zunichte machen.

Antwort

5

Sie benötigen ein Attribut benutzerdefiniertes Validate zu verwenden und Ihr Modell dekorieren mit ihm, nicht einzelnen Eigenschaften:

[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true, Inherited = false)] 
public class MyCustomValidatorAttribute : ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     // value here will be the model instance you could cast 
     // and validate properties 
     return true; 
    } 
} 

und dann dekorieren Sie Ihr Modell mit ihm:

[MyCustomValidator] 
public class MyViewModel 
{ 
    public string Prop1 { get; set; } 
    public string Prop2 { get; set; } 
} 

Als Alternative zu Daten Annotationen zur Validierung Ich würde Sie mehr als nur sehr empfehlen FluentValidation.NET. Es hat auch great integration with ASP.NET MVC.

+0

'[AttributUsage (AttributeTargets.Class)]'? – hunter

+0

hah, muss bearbeiten, wie ich gepostet habe – hunter

Verwandte Themen