LoginSignup
145

More than 5 years have passed since last update.

ASP.NET MVCのモデルでよく使う属性(アノテーション)リスト

Last updated at Posted at 2016-02-16

属性一覧

属性名(アノテーション) 説明
Key 主キー制約(プライマリーキー)
ForeignKey 外部キー
DisplayName Html.LabelFor などのヘルパー利用時に自動代入
Required Not Null制約
StringLength(val) 最大文字制約
MaxLength(val) 最大文字制約
MinLength(val) 最小文字制約
Range(val, val) 数値範囲検証(min, max)
EmailAddress メールアドレス検証
Phone 電話番号検証
Url URL検証
FileExtensions ファイル拡張子検証
Compare(other) 比較検証(プロパティとotherの等しいか)
TimeStamp タイプスタンプ(同時アクセス時の競合対策)
RegularExpression(pattern) 指定した正規表現検証
Index インデックス(DB読み込み高速化、しかし書き込みは遅くなる)
NotMapped データベースにマップしない
Table マッピングするテーブルの名前指定
Column 列の属性
ComplexType 複合型を定義

Key

主キーなので、主にIdなどにつける(ユーザーモデルのIDならUserIdとか)

[Key]
public int Id { get; set; }

ForeignKey

外部キー

coming soon

DisplayName

@Html.DisplayNameなどで表示するラベルを付ける

[DisplayName("ユーザー名")]    
public string Name { get; set; }

Required

入力を必須にする。フォームが空のまま送信されると弾かれます。

[Required(ErrorMessage = "名前は必須入力です")]    
public string Name { get; set; }

StringLength(val)

入力最大文字を設定します。

[StringLength(20, ErrorMessage = "自己紹介は100文字以内でお願いします")]    
public string Memo { get; set; }

MaxLength(val)

入力最大文字を設定します。

[MaxLength(20, ErrorMessage = "名前は20文字以内でお願いします")]    
public string Name { get; set; }

MinLength(val)

入力最少文字を設定します。

[MinLength(4, ErrorMessage = "名前は4文字以上でお願いします")]    
public string Name { get; set; }

Range(val, val)

入力数字の幅を設定します。

[Range(20, 100, ErrorMessage = "年齢は20~100歳の幅でお願いします")]    
public int age { get; set; }

EmailAddress

入力文字がメールアドレスの形式か判定する

[EmailAddress(ErrorMessage = "メールアドレスの形式で入力してください")]
public string Email { get; set; }

Phone

入力文字が電話番号の形式か判定する

[Phone(ErrorMessage = "電話番号の形式で入力してください")]
public string PhoneNumber { get; set; }

Url

入力文字がUrlの形式か判定する

[Url(ErrorMessage = "Urlの形式で入力してください")]
public string url { get; set; }

FileExtensions

入力文字がUrlの形式か判定する

[FileExtensions(ErrorMessage = "こちらのファイル拡張子は利用できません")]
public string FileName { get; set; }

Compare(other)

coming soon

TimeStamp

coming soon

RegularExpression(pattern)

正規表現で指定した文字にて、制限をかける

// 半角英字のみ
[RegularExpression(@"[a-zA-Z]+", ErrorMessage = "半角英字のみ入力できます")]
public string AccountName { get; set; }

// 半角数字
[RegularExpression(@"[0-9]+", ErrorMessage = "半角数字のみ入力できます")]
public string AccountName { get; set; }

// 半角記号
[RegularExpression(@"[ -/:-@\[-\`\{-\~]+", ErrorMessage = "半角記号のみ入力できます")]
public string AccountName { get; set; }

// 半角英数字
[RegularExpression(@"[a-zA-Z0-9]+", ErrorMessage = "半角英数字のみ入力できます")]
public string AccountName { get; set; }

// 半角英数字記号
[RegularExpression(@"[a-zA-Z0-9 -/:-@\[-\`\{-\~]+", ErrorMessage = "半角英数字記号のみ入力できます")]
public string AccountName { get; set; }

// 半角カタカナ
[RegularExpression(@"[。-゚+]+", ErrorMessage = "半角カタカナのみ入力できます")]
public string AccountName { get; set; }

// 全角カタカナ
[RegularExpression(@"[ァ-ヶ]+", ErrorMessage = "全角カタカナのみ入力できます")]
public string AccountName { get; set; }

// 郵便番号
[RegularExpression(@"\d{3}-\d{4}", ErrorMessage = "郵便番号の形式で入力してください")]
public string AccountName { get; set; }

Index

[Index]    
public string Name { get; set; }

NotMapped

coming soon

Table

coming soon

Column

coming soon

ComplexType

coming soon

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
145