Domanda

Ho un oggetto Address definito semplicemente come segue:

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

Abbastanza semplice. Su consiglio una risposta ad un'altra domanda ho chiesto, mi riferisco a questo post di blog quando si collega la mia UI a un oggetto di tipo Person (che contiene un campo Address MailingAddress).

Il problema è che il metodo dell'interfaccia IDataError non sta convalidando nessuna delle proprietà del tipo Indirizzo.

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

Quindi, ovviamente, non so quale sarà il columnName ... Ci sono passato e non è mai stato altro che una delle proprietà pubbliche (di tipo intrinseco). Ho anche provato a correre e infrangere un'affermazione come:

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

Tutto inutilmente.

C'è qualcosa che mi manca?

È stato utile?

Soluzione

È necessario definire IErrorInfo su tutte le classi per le quali si desidera fornire messaggi di errore.

Altri suggerimenti

Dai un'occhiata a la mia risposta qui .

Questo spiega come usare un modelbinder per aggiungere un controllo a livello di classe del tuo modello senza dover usare IDataError - che come hai visto qui può essere piuttosto goffo. Ti consente comunque di utilizzare gli attributi [Richiesto] o qualsiasi altro attributo di convalida personalizzato che hai, ma ti consente di aggiungere o rimuovere singoli errori del modello. Per ulteriori informazioni su come utilizzare le annotazioni dei dati, consiglio vivamente questo post di Scott Gu .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top