Question

J'ai un objet d'adresse défini simplement comme suit:

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

Assez simple. Sur le conseil une réponse à une autre question que j’ai posée, je me réfère à cet article de blog lors de la liaison de mon interface utilisateur à un objet de type Personne (qui contient un champ Address MailingAddress).

Le problème est que la méthode d'interface IDataError ne valide aucune des propriétés du type d'adresse.

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;
    }
}

Donc, évidemment, je ne sais pas ce que sera columnName ... Je l'ai parcouru et cela n'a jamais été autre chose que les propriétés publiques (de types intrinsèques). J'ai même essayé de courir et de rompre avec une déclaration telle que:

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

Tous en vain.

Y a-t-il quelque chose qui me manque?

Était-ce utile?

La solution

Vous devez définir IErrorInfo sur toutes les classes pour lesquelles vous souhaitez fournir des messages d'erreur.

Autres conseils

Jetez un coup d'oeil à ma réponse ici .

Ceci explique comment utiliser un classeur pour ajouter une vérification "au niveau de la classe" de votre modèle sans avoir à utiliser IDataError - ce qui, comme vous l'avez vu ici, peut être assez maladroit. Il vous permet néanmoins d'utiliser les attributs [Obligatoire] ou tout autre attribut de validation personnalisé que vous avez, mais vous permet d'ajouter ou de supprimer des erreurs de modèle individuelles. Pour plus d'informations sur l'utilisation des annotations de données, je vous recommande vivement ce message de Scott Gu .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top