ビューモデルプロパティのDisplayFormat
属性を使用して、社会保障番号または電話番号にDataFormatString
形式を適用する方法はありますか?私はjavascriptでこれを行うことができることを知っていますが、可能であれば、モデルにそれを処理させたいと思います。
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "???????")]
public string Ssn { get; set; }
以下は機能するはずですが、Ssnプロパティのタイプの違いに注意してください。
[DisplayFormat(DataFormatString = "{0:###-###-####}")]
public long Phone { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:###-##-####}")]
public long Ssn { get; set; }
書式設定を適用するには、ビューで次のhtmlヘルパーを使用する必要があることに注意してください。
@Html.DisplayFor(m => m.Property)
型が整数の場合、受け入れられる答えは素晴らしいですが、先行ゼロが失われるのを防ぐために、多くのIDが文字列として入力されることになります。文字列をSubstring
で分割してフォーマットし、DisplayTemplateに貼り付けることで再利用できるようにすることができます。
/Shared/DisplayTemplates/
内に、Phone.vbhtml
という名前のテンプレートを追加します。
@ModelType String
@If Not IsNothing(Model) AndAlso Model.Length = 10 Then
@<span>@String.Format("({0}) {1}-{2}",
Model.Substring(0, 3),
Model.Substring(3, 3),
Model.Substring(6, 4))</span>
Else
@Model
End If
これは、いくつかの方法で呼び出すことができます。
モデルのプロパティに同じ名前のデータ型で注釈を付けるだけです。
<DataType("Phone")> _
Public Property Phone As String
次に、単純なDisplayFor
を使用して呼び出します。
@Html.DisplayFor(Function(model) model.Phone)
または、使用するDisplayTemplateを名前で指定することもできます。
@Html.DisplayFor(Function(model) model.VimsOrg.Phone, "Phone")