Frage

Ich habe ein Adressobjekt definiert einfach wie folgt:

public class Address
{
    public string StreetNumber { get; set; }
    public string StreetAddress { get; set; }
    public string City { get; set; }
    public string PostalCode { get; set; }
}

ziemlich einfach. Auf den Rat eine Antwort auf eine andere Frage fragte ich, ich beziehe mich auf diese Post Blog, wenn auf ein Objekt vom Typ Person meines UI Datenbindung (die enthält eine Adresse MailingAddress Feld).

Das Problem ist, dass die IDataError Interface-Methode ist eine der Eigenschaften des Adresstypen nicht validiert werden.

public string this[string columnName]
{
    get
    {
        string result = null;

        // the following works fine
        if(columnName == "FirstName")
        {
            if (string.IsNullOrEmpty(this.FirstName))
                result = "First name cannot be blank.";
        }
        // the following does not run 
        // mostly because I don't know what the columnName should be
        else if (columnName == "NotSureWhatToPutHere")
        {
            if (!Util.IsValidPostalCode(this.MailingAddress.PostalCode))
                result = "Postal code is not in a know format.";
        }
        return result;
    }
}

Also, natürlich weiß ich nicht, was die column wird ... Ich habe durch ihn getreten und es hat nie etwas anderes als eine der öffentlichen Eigenschaften gewesen (intrinsischer Typen). Ich habe sogar versucht, laufen und brechen auf eine Aussage wie:

if (columnName.Contains("Mailing") || columnName.Contains("Postal"))
    System.Windows.Forms.MessageBox.Show(columnName);

Alle ohne Erfolg.

Gibt es etwas, was ich bin fehlt?

War es hilfreich?

Lösung

Sie müssen IErrorInfo auf allen Klassen definieren, die Sie Fehlermeldungen liefern wollen.

Andere Tipps

Hier finden Sie aktuelle meine Antwort hier .

Dies erklärt, wie einen Modelbinder verwenden, um hinzuzufügen ‚Klasse-Level‘ Überprüfung des Modells ohne IDataError verwenden - die, wie Sie hier kann ziemlich ungeschickt gesehen haben sein. Damit können Sie immer noch verwenden [Erforderlich] Attribute oder jede andere benutzerdefinierte Validierung Attribute, die Sie haben, aber können Sie einzelne Modellfehler hinzufügen oder entfernen. Für mehr auf, wie Daten Anmerkungen verwenden, empfehle ich diesen Beitrag von Scott Gu .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top