有没有办法可以使用DisplayFormat
视图模型属性上的属性来应用DataFormatString
社会保险号或电话号码的格式?我知道我可以用 javascript 来做到这一点,但如果可能的话,我更愿意让模型来处理它。
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "???????")]
public string Ssn { get; set; }
有没有办法可以使用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")