我有一个简单的地址录入应用程序,我试图使用IDataErrorInfo接口作为explained on the asp.net site。在asp.net中使用IDataErrorInfo mvc
它对于可以单独验证的项目非常适用,但当某些项目依赖于其他项目时效果不佳。例如,验证邮政编码取决于国家:
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;
}
}
因此国家已经设置后,你只能验证邮政编码,但似乎没有控制顺序的方式。
我可以使用来自IDataErrorInfo的错误字符串,但不会显示在该字段旁边的Html.ValidationMessage中。
关于此主题的asp.net教程(http://www.asp.net/learn/mvc/tutorial-38-cs.aspx)也许对您有帮助,可以帮助您了解如何开始。 – 2009-10-02 20:58:18