Pregunta

Tengo un objeto Address definido simplemente de la siguiente manera:

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

Bastante simple. En el consejo, una respuesta a otra pregunta que hice, me refiero a esta publicación de blog al vincular mi IU a un objeto de tipo Persona (que contiene un campo Address MailingAddress).

El problema es que el método de interfaz IDataError no está validando ninguna de las propiedades del tipo de Dirección.

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

Entonces, obviamente no sé cuál será el columnName ... Lo he revisado y nunca ha sido otra cosa que ninguna de las propiedades públicas (de tipos intrínsecos). Incluso he intentado ejecutar y romper una declaración como:

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

Todo en vano.

¿Hay algo que me falta?

¿Fue útil?

Solución

Debe definir IErrorInfo en todas las clases para las que desea proporcionar mensajes de error.

Otros consejos

Eche un vistazo a mi respuesta aquí .

Esto explica cómo usar un modelbinder para agregar una comprobación de 'nivel de clase' de su modelo sin tener que usar IDataError , lo cual, como ha visto aquí, puede ser bastante torpe. Todavía le permite usar los atributos [Requerido] o cualquier otro atributo de validación personalizado que tenga, pero le permite agregar o eliminar errores individuales del modelo. Para obtener más información sobre cómo usar las anotaciones de datos, le recomiendo esta publicación de Scott Gu .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top