在我的MVC应用程序中,我有很多 DateTime 数据类型的属性,我在此数据类型的每个新属性上定义DataFormatString定义如下:
型号:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime StartDate{ get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime EndDate{ get; set; }
而不是这个,我认为还有另一种方法可以通过创建一个包含常量值或使用Web配置等的新类来一次定义这些DataFormatStrings,这样,在这种情况下,最好的方法是什么?使用常量值,即日期格式等。我在web.config上使用全球化字符串,但我不确定在web.config中定义日期DataFormatStrings。任何帮助将不胜感激。
答案 0 :(得分:4)
我选择了自定义属性
public class ShortDateFormatAttribute : DisplayFormatAttribute
{
public ShortDateFormatAttribute()
{
DateFormat = "{0:dd/MM/yyyy}";
ApplyFormatInEditMode = true;
}
}
....
[ShortDateFormat]
public DateTime StartDate { get; set; }
[ShortDateFormat]
public DateTime EndDate { get; set; }
答案 1 :(得分:1)
这里有一个限制 - 属性参数只能是编译时的参数。因此,您有两种选择:
只需定义一个常量并在所有模型中使用它,比如
private const string DateFormat = "{0:dd/MM/yyyy}";
[DisplayFormat(DataFormatString = DateFormat, ApplyFormatInEditMode = true)]
在web.config中定义格式并创建您自己的属性,可能继承自DisplayFormat
,将转到web.config以检索必要的数据。应该非常简单 - 你只需要另一个从web.config获取格式参数的构造函数。这样的事情:
public class WebConfigDateDisplayFormatAttribute : DisplayFormatAttribute
{
public WebConfigDateDisplayFormatAttribute()
{
DataFormat = System.Configuration.ConfigurationManager.AppSettings["DateFormat"];
}
}