我在其他地方读过,DisplayFormat只是以与string.Format相同的方式使用DataFormatString。我试图显示一个长的电话号码;在控制台应用程序中,以下工作:
const string PhoneFormat = "{0:###-###-####}";
long? phone = 8005551212;
string s = string.Format(PhoneFormat, phone);
s =“800-555-1212”
为什么当我在我的视图中使用它时
@Html.DisplayTextFor(model => model.Patient.Phone)
显示的是8005551212
这是模型......
public class Patient
{
[DisplayFormat(DataFormatString = "{0:###-###-####}")]
public long? Phone { get; set; }
}
还尝试了DisplayFor,它也不起作用。
似乎对我有用的唯一方法是
Html.Raw(string.Format("{0:###-###-####}", Model.Patient.Phone))
答案 0 :(得分:12)
我快速浏览了MVC3 source。我假设您通过DataAnnotations指定格式
[DisplayFormat(DataFormatString = "{0:###-###-####}")]
public long Phone { get; set; }
当您使用@Html.DisplayTextFor(m => m.Property)
帮助程序时,似乎不会应用此功能,这显然最终会执行简单的ToString
。但是,当您使用@Html.DisplayFor(m => m.Property)
时会应用它,该TemplateHelpers
会调用{{1}}。