Joh*_*oge 4 validation asp.net-mvc idataerrorinfo
我有一个简单的地址输入应用程序,我正在尝试使用IDataErrorInfo接口,如asp.net网站上所述.
它适用于可以独立验证的项目,但是当某些项目依赖于其他项目时效果不佳.例如,验证邮政编码取决于国家/地区:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您只能在设置国家/地区后验证邮政编码,但似乎无法控制该订单.
我可以使用IDataErrorInfo中的错误字符串,但这不会显示在字段旁边的Html.ValidationMessage中.
对于更复杂的业务规则验证,而不是类型验证,可能更好地实现设计模式,例如服务层.您可以检查ModelState并根据您的逻辑添加错误.
您可以在此处查看Rob Conroys模式示例
http://www.asp.net/learn/mvc/tutorial-29-cs.aspx
这篇关于数据注释的文章也很有用.
http://www.asp.net/learn/mvc/tutorial-39-cs.aspx
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
2317 次 |
| 最近记录: |