使用DisplayFormatAttribute自定义格式化字符串的显示格式

3

我希望能够标记我的视图模型中的属性,以便在我的MVC视图中显示时使用自定义格式进行格式化。

我认为我需要自己的displayformatattribute并设置displayformat,但我不确定如何设置这个displayformat或者设置在哪里。如果我想把数字显示为货币,很容易,只需要在属性的构造函数中将DataFormatString设置为"{0:C}"。

但是,如果例如我想掩盖电子邮件地址(即删除域名),我该如何使用displayformatattribute或可能是datatypeattribute来实现呢?所以这是一个字符串字段,我想要转换它的格式。我知道还有其他方法,例如自定义显示模板,但那样就会失去一些内置的htmlhelper功能。我只想改变字符串的格式,没有别的。最好的办法是将它添加到需要掩盖的字段的属性中,使其变得简单明了。

DataFormatString似乎无法采用自定义格式化程序?

谢谢 Phil

1个回答

0

有些类似于: 如何制作可配置的DisplayFormat属性

public class CustomDisplayFormatAttribute : DisplayFormatAttribute {
    public CustomDisplayFormatAttribute() {
        //MSDN Custom Date Format string rules:http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
        DataFormatString = "{0;dddd dd MMMM YYYY}";
    }
}

然后你可以像这样使用它和基本属性,例如ApplyFormatInEditMode:

[CustomDisplayFormatAttribute(ApplyFormatInEditMode = false)]
public DateTime? CreatedOn { get; set; }

关于日期,有服务器和客户端的文化设置。http://msdn.microsoft.com/en-us/library/bb882561(v=vs.110).aspx讨论了如何在JavaScript中实现此功能(但没有给出答案)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接