MVC DataAnnotations Проверка URL - PullRequest
       2

MVC DataAnnotations Проверка URL

6 голосов
/ 20 августа 2011

Я использую ASP.NET MVC3 и пытаюсь проверить поле URL с помощью DataAnnotationsExtensions.

Это почти то, что мне нужно.Тем не менее, он заставляет пользователя добавлять «http://" в начале строки URL», если нет, он показывает следующее сообщение проверки:

The URL field is not a valid fully-qualified http, https, or ftp URL.

в URL-адресе расширений аннотаций данных демостраница показывает дополнительный валидатор UrlWithoutProtocolRequired , но я нигде не могу его найти.

Как использовать этот валидатор или как легко проверить URL без "http://" часть?

Ответы [ 3 ]

11 голосов
/ 20 августа 2011

Опция без протокола для DataAnnotationsExtensions доступна в исходном коде, но считается бета-версией или «vNext» и не была выпущена как часть пакета NuGet.Поэтому, если вы загрузите исходный код и скомпилируете, вы увидите, что атрибут [Url] имеет перегрузку [Url (requireProtocol: false)].Вы можете увидеть это в последнем файле UrlAttribute.cs ( UrlArribute.cs ).Кроме того, если вы загляните в DataAnnotationsExtensions wiki , вы увидите, что эта функция должна быть выпущена в ближайшее время (я думаю, на следующей неделе или двух для официального следующего выпуска).

5 голосов
/ 04 сентября 2013

Просто для завершения:

Начиная с MVC3, теперь мы можем использовать атрибут проверки [URL].

[Required]
[Url]
public string Website { get; set; }
0 голосов
/ 14 декабря 2017

Мне не удалось найти встроенный атрибут, соответствующий URL-адресу и принять протокол как необязательный.

Поэтому вместо этого я использовал следующий валидатор RegularExpression:

public class MediaModel
{
    public long MediaId { get; set; }
    [StringLength(60)]
    [RegularExpression(@"((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)", ErrorMessage = "Not a valid website URL")]
    public string Website { get; set; }
    [DisplayName("YouTube Video")]
    [StringLength(200)]
    [RegularExpression(@"((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)", ErrorMessage = "Not a valid YouTube video")]
    public string YouTubeVideo { get; set; }
}

Я скопировалРегулярное выражение от здесь , оно хорошее.

...