2011-08-19 18 views
5

私はASP.NET MVC3を使用してDataAnnotationsExtensionsを使用してURLフィールドを検証しようとしています。MVC DataAnnotations URLの検証

これはほとんど必要なものです。しかし、それは追加して、ユーザーを強制的に「http://」URL文字列のbegginingで、ない場合、それは次の検証メッセージが表示されます:それは示したデータ注釈拡張URL demo page

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

を追加のバリデータUrlWithoutProtocolRequiredが、どこでも見つかりません。

は、どのように私は、このバリデータを使用することができ、またはどのように私は簡単にせずにURLを検証することができます「のhttp://」の部分?

答えて

11

DataAnnotationsExtensions用のプロトコルレスオプションは、ソースコードで提供されていますが、ベータ版や「vNext」とみなされ、NuGetパッケージの一部としてリリースされていません。したがって、ソースをダウンロードしてコンパイルすると、[Url]属性にオーバーロード[URL(requireProtocol:false)]が表示されます。これは最新のUrlAttribute.csファイル(UrlArribute.cs)で確認できます。また、DataAnnotationsExtensions wikiを見ると、この機能はすぐにリリースされる予定です(次の公式の次のリリースでは、私は次の1週間または2週間後に考えています)。

+0

もう一度ありがとう、スコット。私はソースコードを調べます。 –

5

ちょうどこの完了するには:MVC3は今、私たちは、[URL]検証属性を使用することができますので

を。

[Required] 
[Url] 
public string Website { get; set; } 
+2

丁寧に書き込んでください!私たちは勝者を持っています! – markthewizard1234

+0

オプションにする方法はありますか? – DonO

0

URLに一致する組み込み属性が見つかりませんでした。オプションとしてプロトコルを受け入れました。

だから代わりに、私は、次の正規表現のバリデータを使用:私はhereから正規表現をコピーし

public class MediaModel 
{ 
    public long MediaId { get; set; } 
    [StringLength(60)] 
    [RegularExpression(@"((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[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][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)", ErrorMessage = "Not a valid YouTube video")] 
    public string YouTubeVideo { get; set; } 
} 

を、それが良いものです。

関連する問題