utilizando IDataErrorInfo en asp.net mvc

Tengo una aplicación de entrada de dirección simple que estoy tratando de usar la interfaz IDataErrorInfo comoexplicado en el sitio asp.net.

Funciona bien para los elementos que pueden validarse de forma independiente, pero no tan bien cuando algunos elementos dependen de otros. Por ejemplo, la validación del código postal depende del país:

    private string _PostalCode;
    public string PostalCode
    {
        get
        {
            return _PostalCode;
        }
        set
        {
            switch (_Country)
            {
                case Countries.USA:
                    if (!Regex.IsMatch(value, @"^[0-9]{5}$"))
                        _errors.Add("PostalCode", "Invalid Zip Code");
                    break;
                case Countries.Canada:
                    if (!Regex.IsMatch(value, @"^([a-z][0-9][a-z]) ?([0-9][a-z][0-9])$", RegexOptions.IgnoreCase))
                        _errors.Add("PostalCode", "Invalid postal Code");
                    break;
                default:
                    throw new ArgumentException("Unknown Country");
            }
            _PostalCode = value;
        }
    }

Por lo tanto, solo puede validar el código postal después de que se haya establecido el país, pero parece que no hay manera de controlar ese orden.

Podría usar la cadena de error de IDataErrorInfo, pero eso no aparece en el Html.ValidationMessage al lado del campo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta