usando IDataErrorInfo no asp.net mvc
Eu tenho um aplicativo de entrada de endereço simples que estou tentando usar a interface IDataErrorInfo comoexplicado no site asp.net.
Funciona muito bem para itens que podem ser validados independentemente, mas não tão bem quando alguns itens dependem dos outros. Por exemplo, validar o código postal depende do 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;
}
}
Assim, você só pode validar o código postal depois que o país tiver sido definido, mas parece não haver nenhuma maneira de controlar esse pedido.
Eu poderia usar a string Error de IDataErrorInfo, mas isso não aparece no Html.ValidationMessage próximo ao campo.