2012-06-11 13 views

Antwort

12

Folgendes sollte funktionieren, beachten Sie jedoch den Typunterschied für die Ssn-Eigenschaft.

[DisplayFormat(DataFormatString = "{0:###-###-####}")] 
public long Phone { get; set; } 

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:###-##-####}")] 
public long Ssn { get; set; } 

Beachten Sie, dass für die Formatierung Sie müssen angewandt werden würden, die folgenden HTML-Helfer in Ihrer Ansicht verwenden:

@Html.DisplayFor(m => m.Property) 
+2

Hmm, ich bin zu Chaos geht um mit diesem, aber beide Telefon und SSN werden als VARCHAR in meiner Datenbank gespeichert, also muss ich ein bisschen Fußarbeit machen, um diese Eigenschaften als 'lang' zu konfigurieren. Es gibt keine Möglichkeit, dies mit den als 'string' eingegebenen Eigenschaften zu tun. –

+1

Eine Option wäre, ein Ansichtsmodell mit Eigenschaften vom Typ long und den zugehörigen Datenanmerkungen einzurichten und den Typ einfach zwischen Ihrer Domänenentität und dem Ansichtsmodell zu konvertieren: Convert.ToInt64 ("123456789") – Jesse

+2

lol ... love downvotes on Antworten, die über ein Jahr alt sind, ohne entsprechende Kommentare .... – Jesse

0

Die akzeptierte Antwort ist groß, wenn der Typ eine ganze Zahl ist, aber viele IDs werden als Zeichenfolge eingegeben, um zu verhindern, dass führende Nullen verloren gehen. Sie können einen String formatieren, indem Sie ihn mit Substring in Stücke zerlegen und wiederverwendbar machen, indem Sie ihn in ein DisplayTemplate stecken.

Innerhalb /Shared/DisplayTemplates/, fügen Sie eine Vorlage Phone.vbhtml genannt:

@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 

du in ein paar Arten aufrufen können:

  1. einfach die Eigenschaft auf Ihrem Modell mit einem Datentyp des gleichen Anmerkungen versehen Name:

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

    Und dann Anruf mit einem einfachen DisplayFor:

    @Html.DisplayFor(Function(model) model.Phone) 
    
  2. Alternativ können Sie die DisplayTemplate angeben Sie möchten, dass nach dem Namen verwenden:

    @Html.DisplayFor(Function(model) model.VimsOrg.Phone, "Phone") 
    
Verwandte Themen