gpt4 book ai didi

asp.net-mvc - 在 asp.net mvc 中使用 IDataErrorInfo

转载 作者:行者123 更新时间:2023-12-05 00:43:02 31 4
gpt4 key购买 nike

我有一个简单的地址输入应用程序,我正在尝试将 IDataErrorInfo 接口(interface)用作 explained on the asp.net site .

它适用于可以独立验证的项目,但当某些项目依赖于其他项目时效果不佳。例如,验证邮政编码取决于国家/地区:

    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 中。

最佳答案

对于更复杂的业务规则验证,而不是类型验证,实现设计模式(例如服务层)可能更好。您可以检查 ModelState 并根据您的逻辑添加错误。

您可以在此处查看 Rob Conroys 模式示例

http://www.asp.net/learn/mvc/tutorial-29-cs.aspx

这篇关于数据注释的文章也很有用。

http://www.asp.net/learn/mvc/tutorial-39-cs.aspx

希望这可以帮助。

关于asp.net-mvc - 在 asp.net mvc 中使用 IDataErrorInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1511495/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com