私の目標は、IPアドレスの正規表現または動的DNSアドレスに対して検証される検証済みのIPアドレスフィールドを作成することです。したがって、基本的にユーザーが有効なIPアドレスまたは有効な動的DNSアドレスを入力すると、クライアントはそれを通過させます。カスタムフィールドの作成方法とデータフィールドの複数の属性の方法を示す記事は見つかりましたが、それらをOR条件として実行する方法については何も見つかりませんでした。OR条件付き複数の属性を使用するMVC
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アドレスを入力すると、有効なドメイン名を入力する必要があると返されます。有効なドメイン名は両方の属性を検証しようとしているためわかります。それらは相互に排他的であるため、決して両方を満たすことはできません。
ご意見をいただければ幸いです!
ありがとうございます!
マシュー