web-dev-qa-db-ja.com

電話番号または社会保障番号のDisplayFormat.DataFormatString

ビューモデルプロパティのDisplayFormat属性を使用して、社会保障番号または電話番号にDataFormatString形式を適用する方法はありますか?私はjavascriptでこれを行うことができることを知っていますが、可能であれば、モデルにそれを処理させたいと思います。

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "???????")]
public string Ssn { get; set; }
11
AJ.

以下は機能するはずですが、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)
13
Jesse

型が整数の場合、受け入れられる答えは素晴らしいですが、先行ゼロが失われるのを防ぐために、多くの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

これは、いくつかの方法で呼び出すことができます。

  1. モデルのプロパティに同じ名前のデータ型で注釈を付けるだけです。

    <DataType("Phone")> _
    Public Property Phone As String
    

    次に、単純なDisplayForを使用して呼び出します。

     @Html.DisplayFor(Function(model) model.Phone)
    
  2. または、使用するDisplayTemplateを名前で指定することもできます。

     @Html.DisplayFor(Function(model) model.VimsOrg.Phone, "Phone")
    
1
KyleMit