【T6a】検証メッセージのカスタマイズと集約表示(4/5)
プロジェクトタイプ | ASP.NET Core Web アプリ(Model-View-Controller) |
---|
プロジェクト名 | T6a |
---|
ソリューション名 | PIT6 |
---|
ターゲットフレームワーク | .NET 8.0(長期的なサポート) |
---|
最上位レベルのステートメントを使用しない | 使用する(チェックオフ) |
---|
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
- プロジェクトの作成作業については準備作業を参照せよ.
6a-4. 検証メッセージのカスタマイズ
C#のコード上でプロパティの型や属性によって設定した,必須かどうかや値の範囲の制約に対する検証メッセージは
カスタマイズすることが可能である.ScoreRecord
クラスを_に示すように変更してみよう.
ScoreRecordクラスの変更内容 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public class ScoreRecord
{
[Display(Name = "ID")]
public int Id { get; set; }
[Display(Name = "名前")]
[Required(ErrorMessage = "あいうえお")]
public string Name { get; set; } = "";
[Display(Name = "スコア")]
[Required(ErrorMessage = "かきくけこ")]
[Range(0, 999999999, ErrorMessage = "さしすせそ")]
public int Score { get; set; }
[Display(Name = "記録日時")]
[DataType(DataType.DateTime)]
[Required(ErrorMessage = "たちつてと")]
public DateTime Recorded { get; set; }
}
|
_に示す通り,チュートリアル【T4b】で使用した[Range]
属性をはじめ,ほとんどの検証用の属性は
ErrorMessage
プロパティを指定することで検証時のエラーメッセージを変更することができる .
なお,_で使用している[Required]
属性は,その項目が必須であることを指定するための古い属性である.
現在の ASP.NET Core では必須/任意といった指定は,そのプロパティの型のNull許容性によって指定するが,検証メッセージを
変更する場合は明示的にこの属性を付与する必要がある.
ここまで書けたら実行してみよう.起動したら「新規作成」のリンクをクリックして,入力欄を空にするか範囲外の値を入力してみよう.
_のように表示されるはずである.
実行結果_は試行のために無意味な検証メッセージを設定しているが,実用のためにはより分かりやすいメッセージを指定するべきである.
例として_のように変更しよう.
ScoreRecordクラスの変更内容 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public class ScoreRecord
{
[Display(Name = "ID")]
public int Id { get; set; }
[Display(Name = "名前")]
[Required(ErrorMessage = "「名前」は必須項目です.")]
public string Name { get; set; } = "";
[Display(Name = "スコア")]
[Required(ErrorMessage = "「スコア」は必須項目です.")]
[Range(0, 999999999, ErrorMessage = "「スコア」には0以上999999999以下の値を入力してください.")]
public int Score { get; set; }
[Display(Name = "記録日時")]
[DataType(DataType.DateTime)]
[Required(ErrorMessage = "「記録日時」は必須項目です.")]
public DateTime Recorded { get; set; }
}
|
先ほどと同様に実行すると_のように表示されるはずである.
実行結果ここまで確認したら次に進もう.
Last updated on 2024-06-10
Published on 2024-06-10