我有一個簡單的地址錄入應用程序,我試圖使用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