Pergunta

Eu tenho um objeto Endereço definida simplesmente como segue:

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

bastante simples. Seguindo o conselho de uma resposta a outra pergunta eu perguntei, eu estou me referindo a este post quando ligação de dados a minha interface do usuário para um objeto do tipo Pessoa (que contém um campo de endereço MailingAddress).

O problema é que o método de interface IDataError não está validando qualquer uma das propriedades do tipo de endereço.

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

Então, obviamente, eu não sei o que o columnName será ... Eu já passou por ela e nunca foi outra coisa senão qualquer uma das propriedades públicas (de tipos intrínsecos). Eu mesmo tentei correr e quebrar em uma declaração como:

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

Todos sem sucesso.

Existe algo que eu estou perdendo?

Foi útil?

Solução

Você precisa definir IErrorInfo em todas as classes que deseja fornecer mensagens de erro para.

Outras dicas

Dê uma olhada minha resposta aqui .

Isto explica como usar um ModelBinder para adicionar 'classe de nível' verificação do seu modelo sem ter que usar IDataError - que, como você já viu aqui pode ser bastante desajeitado. Ele ainda permite que você use atributos [necessário] ou quaisquer outros atributos de validação personalizada que você tem, mas permite-lhe adicionar ou remover erros de modelo individuais. Para saber mais sobre como usar os dados anotações Eu recomendo este post do Scott Gu .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top