アノテーションで表示形式を指定する
前回の記事では、アノテーションを使ってラベルを設定しました。
今回は、前回作成したプログラムを元に、アノテーションを使って、表示形式を指定します。
アノテーションを使った表示形式の指定方法に関する詳しい情報は、以下のマイクロソフトのサイトを参照してください。
表示形式の設定方法
ViewModelで定義したプロパティの表示形式を指定するには、DisplayFormatを使います。
プロパティの上に、<DisplayFormat(DataFormatString:="表示形式")>と記述します。
この時、赤波線が表示されるので、そこにカーソルを合わせると、System.ComponentModel.DataAnnotationsのインポートが促されるので、画面に従ってインポートします。
前回までは、生年月日が「2000/01/01 00:00:00」のように時分秒まで表示されていましたが、表示形式を「0:yyyy年MM月dd日}」にすると、「2000年1月1日」と表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Imports System.ComponentModel Imports System.ComponentModel.DataAnnotations Public Class HomeViewModel <DisplayName("氏名")> Public Property Name As String <DisplayName("住所")> Public Property Address As String <DisplayName("生年月日")> <DisplayFormat(DataFormatString:="{0:yyyy年MM月dd日}")> Public Property Birthday As Date End Class |
表示形式を指定した値の表示方法
ViewModelで表示形式を指定しても、ビューで@Model.Birthdayとすると、指定通りの形式で表示されません。
指定した形式通りに表示するには、HTMLヘルパーのDisplayFor()を使用します。
DisplayFor()の引数の指定は、前回のLabelFor()と同様です。
Html.DisplayFor(Function(モデル) モデル.プロパティ名)
DisplayFormatを使っているのは、Birthday(生年月日)だけですが、ビューでモデルの値を表示する際は、DisplayForを使うのが一般的なので、他の項目もDisplayForを使って表示させるようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@ModelType HomeViewModel @Code ViewData("Title") = "Index" End Code <h2> @Html.LabelFor(Function(model) model.Name) @Html.DisplayFor(Function(model) model.Name) </h2> <h2> @Html.LabelFor(Function(model) model.Address) @Html.DisplayFor(Function(model) model.Address) </h2> <h2> @Html.LabelFor(Function(model) model.Birthday) @Html.DisplayFor(Function(model) model.Birthday) </h2> |
プログラムの実行
プログラムを実行すると、下図のように生年月日が「yyyy年MM月dd日」の形式で表示されます。