Gibt es eine Möglichkeit, dass ich das DisplayFormat
Attribut auf einer Ansichtsmodelleigenschaft verwenden kann, um ein DataFormatString
Format für eine Sozialversicherungsnummer oder eine Telefonnummer anzuwenden? Ich weiß, dass ich das mit Javascript machen könnte, würde es aber vorziehen, wenn das Modell es handhaben würde.DisplayFormat.DataFormatString für eine Telefonnummer oder Sozialversicherungsnummer
Antwort
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)
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:
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)
Alternativ können Sie die DisplayTemplate angeben Sie möchten, dass nach dem Namen verwenden:
@Html.DisplayFor(Function(model) model.VimsOrg.Phone, "Phone")
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. –
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
lol ... love downvotes on Antworten, die über ein Jahr alt sind, ohne entsprechende Kommentare .... – Jesse