przy użyciu IDataErrorInfo w asp.net mvc
Mam prostą aplikację do wprowadzania adresów, której próbuję użyć interfejsu IDataErrorInfo jakowyjaśnione na stronie asp.net.
Świetnie sprawdza się w przypadku elementów, które można zatwierdzać niezależnie, ale nie tak dobrze, gdy niektóre elementy zależą od innych. Na przykład sprawdzanie poprawności kodu pocztowego zależy od kraju:
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;
}
}
Możesz więc zweryfikować kod pocztowy dopiero po ustawieniu kraju, ale wydaje się, że nie ma możliwości kontrolowania tego zamówienia.
Mogłem użyć ciągu Error z IDataErrorInfo, ale nie pojawia się on w wiadomości Html.ValidationMessage obok pola.