gpt4 book ai didi

C# MVC 在 OR 条件下使用多个属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:33:05 29 4
gpt4 key购买 nike

我的目标是创建一个经过验证的 IP 地址字段,该字段将根据 IP 地址正则表达式或动态 DNS 地址进行验证。所以基本上,如果用户输入一个有效的 IP 地址或一个有效的动态 DNS 地址,客户端将允许它通过。我找到了展示如何制作自定义字段以及如何在数据字段上设置多个属性的文章,但没有关于如何将它们作为 OR 条件运行的文章。

这是我的自定义 IP 和域名属性的代码:

    public class IPAddressAttribute : RegularExpressionAttribute
{
public IPAddressAttribute()
: base(@"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$")
{ }
}
public class DomainNameAttribute : RegularExpressionAttribute
{
public DomainNameAttribute()
: base(@"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$")
{ }
}

这是我的字段代码:

[Required(ErrorMessage="Wan IP is required")]
[DisplayName("Wan IP")]
[IPAddress(ErrorMessage="Enter a valid IP")]
[DomainName(ErrorMessage="Enter a valid Domain Name")]
public virtual string wan_ip { get; set; }

此代码目前检查这两个属性。当我输入一个有效的 IP 地址时,它返回说我需要输入一个有效的域名,这是可以理解的,因为它试图验证这两个属性。因为它们是相互排斥的,所以它们永远无法同时满足。

任何建议将不胜感激!

谢谢!

马修

最佳答案

我很确定你必须将它们合并到一个属性中,比如

[域或IP地址]

并在属性中处理您的 OR 逻辑。

或者您可以查看自定义模型验证器

关于C# MVC 在 OR 条件下使用多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443198/

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