モデル値の検証に関する属性
StringLength 属性
[StringLength(50, ErrorMessage = "50文字以内で入力してください")]
StringLength 属性は、データフィールドで使用できる最小文字長と最大文字長を指定します。上の例では、使用可能な文字数が 50 文字以下に制限されます。
ErrorMessageプロパティは、これ以外の検証属性でも利用できますが、これ以降は省略します。
以下のようにのように、MinimumLength を指定することで、文字列の最小長を設定することもできます。ただし、Required 属性も指定しないと、空文字を制限することはできません。
[StringLength(50, MinimumLength=2)]
RegularExpression 属性
[RegularExpression(@"^[A-Z][a-zA-Z0-9]+$")]
RegularExpression 属性は、正規表現を使った入力検証を行うことができます。
Required 属性
[Required]
Required 属性は、必須フィールドを示す属性です。参照型のプロパティに指定します。
値型 (例: DateTime、int、double) などの null 非許容型では、Required 属性は必要ありません。 自動的に必須フィールドとして扱われます。
以下のようにすることで、null は非許容だけど、空文字列をデータベースに入れることができます。
[Required(AllowEmptyStrings = true)]
Range 属性
[Range(0, 5)]
持ちうる値の範囲を指定します。double型を指定することも可能です。
また、以下のようにすれば、日付の範囲を指定することも可能です。
[Range(typeof(DateTime), "1/2/2004", "3/4/2004",
Compare 属性
[Compare("Password", ErrorMessage = "パスワードが一致しません")]
public string PasswordConfirm { get; set; }
2つのプロパティが一致するかを検証します。上の例は、PasswordConfirmプロパティの値とPasswordプロパティの値が一致する必要があります。
EmailAddress 属性
[EmailAddress]
電子メール アドレスであるかを検証します。
Phone 属性
[Phone]
電話番号であるかを検証します。
CreditCard 属性
[CreditCard]
クレジットカード番号であるかを検証します。
表示/入力に関する属性
Display 属性
[Display(Name = "Last Name")]
Display属性は、ラベルのキャプションを指定する際に利用します。
DisplayFormat 属性
DisplayFormat属性は、書式を明示的に指定するために使用されます。
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
ApplyFormatInEditMode オプションは、書式設定を編集 UI にも適用する必要があることを指定します。
DisplayFormat 属性は単独で使用できます。 一般的には、DataType 属性を DisplayFormat 属性と一緒に使用することが推奨されています。
以下のように書けば、nullの時に表示する値を指定できます。
[DisplayFormat(NullDisplayText = "未指定")]
次の例は、空の文字列値を null 値に変換せずに、空文字のまま扱うことを指定します。
[DisplayFormat(ConvertEmptyStringToNull = false)]
DataType 属性
DataType 属性は、ビューエンジンに対して、データの書式設定のヒントを提供します。プロパティの型よりも詳しい型を指定したいときに利用します。検証は行われませんが、HTML5の機能により、結果的に検証と同等の働きが組み込まれることがあります。
[DataType(DataType.Date)]
DataType 属性は、HTML 5 の data- (データ ダッシュと読みます) 属性が出力されます。 DataType 属性では検証は提供されません。
DataType 列挙型は、Date、Time、PhoneNumber、Currency、EmailAddress など、多くのデータ型のために用意されています。
次のような書けば、パスワードを入力するフィールドであることを指定できます。この場合は、入力タグヘルパーにより、type="password"
属性が付加されます。
[DataType(DataType.Password)]
HiddenInput属性
隠しフィールドであることを示します。入力タグヘルパーにより、type="hidden"
がinput要素に付加されます。
[HiddenInput]
データベースに関する属性
Column 属性
[Column("FirstName")]
public string FirstMidName { get; set; }
このように書けば、テーブルのカラム名をプロパティ名とは別のものに変更できる。
以下のように、データベースのカラムの詳細な型を指定することもできます。
[Column(TypeName = "decimal(18, 2)")]
Key 属性
[Key]
[Key] 属性は、プロパティ名が <classname>Id
や Id
以外の時に、そのプロパティが主キー (PK) であることを示すために使用します。
DatabaseGenerated 属性
[DatabaseGenerated(DatabaseGeneratedOption.None)]
上のコードはPKの値をデータベースで自動生成するのではなく、アプリケーション側で指定することを示します。
TimeStamp 属性
[Timestamp]
public byte[] RowVersion { get; set; }
オプティミスティック コンカレンシーのチェックに利用されるフィールドであることを示します。
SQL Serverでは、rowversion型が割り当てられます。
属性に関するその他の情報
以下のように、複数の属性を 1行に配置することができます。
[DataType(DataType.Date),Display(Name = "Hire Date"),DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]