Моя цель - создать поле с проверенным IP-адресом, которое будет проверяться по IP-адресу, обычному экспрессу или динамическому DNS-адресу. Таким образом, в основном, если пользователь вводит действительный IP-адрес ИЛИ действительный динамический DNS-адрес, клиент разрешит ему пройти. Я нашел статьи, показывающие, как создавать настраиваемые поля и как использовать несколько атрибутов в поле данных, но ничего не говорится о том, как запускать их как условие ИЛИ.
Вот мой код для пользовательских атрибутов 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-адрес, он возвращается, говоря, что мне нужно ввести действительное доменное имя, что понятно, потому что он пытается проверить оба атрибута. Поскольку они взаимоисключающие, они никогда не могут быть удовлетворены.
Любые предложения будут с благодарностью!
Спасибо!
Мэтью