2010-08-02 4 views
7

Ich versuche CustomValidation hinzuzufügen und es Fehler machen Rückkehr fürWie kann ich Fehlermemberschlüssel in ASP.NET MVC CustomValidation angeben?

Html.ValidationMessageFor (m => m.SubleaseCompany)

[CustomValidation(typeof(CreateSpaceModelValidation), "ValidateCreateSpaceModel")] 
public class CreateSpaceModel 
{ 
    public Building Building { get; set; } 
    public Space Space { get; set; } 

    public string SubleaseCompany { get; set; } 
} 

public class CreateSpaceModelValidation 
{ 
    public static ValidationResult ValidateCreateSpaceModel(CreateSpaceModel model) 
    { 
     return new ValidationResult("You should specify Sublease Contact", new[] { "SubleaseCompany" }).; 
    } 
} 

Ich bin für Validation Konstruktor zweite Argument (memberNames) aber das scheint nicht zu funktionieren.

+0

Welchen Weg haben Sie damit gemacht? – Aaron

Antwort

8

Sieht aus, als hätte das MVC-Team die Funktionalität für den MemberNames-Parameter nie implementiert. Siehe die von ausüben folgende .... http://devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2

In manchen Situationen können Sie die zweite Konstruktor Überlastung von Validation versucht sein zu bedienen, dass in einem IEnumerable von Mitgliedernamen nehmen. Zum Beispiel können Sie entscheiden, dass Sie die Fehlermeldung auf beiden Feldern angezeigt werden soll sein verglichen, so ändern Sie den Code zu dies:

return new ValidationResult(
    FormatErrorMessage(validationContext.DisplayName), 

new [] {validationContext.MemberName, OtherProperty}); Wenn Sie Ihren Code ausführen, finden Sie absolut keinen Unterschied. Das ist , obwohl diese Überladung vorhanden ist und vermutlich an anderer Stelle in dem .NET-Framework verwandt wird, ignoriert das MVC Framework vollständig ValidationResult.MemberNames.

Verwandte Themen