2012-02-29 13 views
3

私はMSDNでこれを読んでいますが、実際にはあまり詳しく説明していません。データ列またはパラメータに関連付けるデータ型を指定するために使用されます。意味をなさないこれは私が自分の所有物のすべてでそれを使うべきことを意味しますか?私はそうではないと思う。だから、なぜDataType.Textは、あなたが文字列としてプロパティを持っているとき、かなり役に立たないようです。データ型DataAnnotation

私は、1行のテキスト入力要素の代わりにクライアント側にテキスト領域を作成するために、複数行のテキストをデータ型として使用する方法を見つけました。しかし、これはデータ列またはパラメタとどのように関連していますか?

私はDataType.Urlを使用していたのでそれを検証すると仮定しましたが、URLが入力されたかどうかに関係なく処理されます。 DataType.Emailと同じです。間違っていることがあるのですか、代わりにRegExを使用する必要がありますか?

+0

あなたは何のためにRegExを使いたいですか? – gideon

答えて

7

これらはされていない私のMSDNの記事DataType Enumeration を参照してください。検証属性。 MSDNの記事から:

DataTypeAttribute属性がデータベース固有のタイプよりも明確なタイプ を使用することによって、あなたがフィールドをマークすることができます。たとえば、 電子メールアドレスを含む文字列データフィールドは、 のEmailAddressタイプに属している可能性があります。この情報は フィールドテンプレートからアクセスでき、データフィールドの処理方法を変更できます。

+0

[OK]を、何らかの理由で私は彼らが検証できると思った。私は今あなたがディスプレイのための電子メールアドレスのリンクで何を意味しているのか分かりません。それをクリアしていただきありがとうございます。 –

+1

これは検証属性です。少なくともMVC 4では、DataTypeAttributeはValidationAttributeから派生しています。 – fejesjoco

0

完全にあなたが求めているのかわからしかし、あなたは(メールのように、などの電話番号)ビジネスニーズに基づいてプロパティをマークDataAnnotations助けない

メンバーにDataType Enumeration

これは何のためにあるのですを参照してください?

クラスにアノテーションを付け、それらをMVCアプリケーションのモデルとして使用するとき。 (あなたの場所ですべてを持っている場合でも、JavaScriptを使用してクライアント上)asp.net-MVCは、検証の世話をします

例えば、このチュートリアルを参照してください: http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-6

4

ASP.NET MVCのコンテキストでDataType属性は、そのプロパティの表示と編集をレンダリングするために使用するものをビューテンプレートの多かれ少なかれヒントである(つまり、 は、リンクを作成します)。ご存じのように、ASP.NET MVCは内部的にエディタと表示テンプレート(MultilineText - > textarea html input)を提供するサポートされているデータ型の列挙を提供しますが、カスタム型名を持つ文字列パラメータも使用できます。 Editor/EditorForまたはDisplay/DisplayForを使用すると(Views/Shared/...でも検索されます)、Views/ControllerName/EditorTemplates/{DataTypeName}.cshtmlまたはViews/ControllerName/DisplayTemplates/{DataTypeName}.cshtmlにその名前(あらかじめ定義されているかどうか)を持つビューが検索されます。それがうまくいかない場合は、利用可能な場合は組み込みのものを使用します。

DataType属性を適用する効果は、UIHint属性を適用する場合とほぼ同じですが、もう少し明示的です。たとえば、私はDataType.Currencyを価格に、UIHintをカスタムスライダUIコントロールモデルプロパティに使用します。

ビルドインテンプレートが用意されていますが、カスタム表示/エディタテンプレートでカスタムデータ型を使用する場合は、それを自分で指定する必要があります。

0

DataTypeAttributeは、ValidationAttributeから継承されていても何も検証しません。 IsValid()メソッドをオーバーライドしますが、常にtrueを返します。

EmailまたはUrlフィールドを検証する場合は、代わりにEmailAttributeまたはUrlAttributeを使用してください。これらはDataTypeAttributeから継承され、IsValid()メソッドを適切にオーバーライドします。

これは、特定のデータ型の属性の全リストです:

  • CreditCardAttribute
  • EmailAddressAttribute
  • EnumDataTypeAttribute
  • FileExtensionsAttribute
  • PhoneAttribute
  • UrlAttribute