使用常量来定义MVC中的属性格式

时间:2015-05-15 09:03:42

标签: asp.net-mvc model static constants date-format

在我的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。任何帮助将不胜感激。

2 个答案:

答案 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)

这里有一个限制 - 属性参数只能是编译时的参数。因此,您有两种选择:

  1. 只需定义一个常量并在所有模型中使用它,比如

    private const string DateFormat = "{0:dd/MM/yyyy}";
    
    [DisplayFormat(DataFormatString = DateFormat, ApplyFormatInEditMode = true)]
    
  2. 在web.config中定义格式并创建您自己的属性,可能继承自DisplayFormat,将转到web.config以检索必要的数据。应该非常简单 - 你只需要另一个从web.config获取格式参数的构造函数。这样的事情:

    public class WebConfigDateDisplayFormatAttribute : DisplayFormatAttribute
    {
        public WebConfigDateDisplayFormatAttribute()
        {
            DataFormat = System.Configuration.ConfigurationManager.AppSettings["DateFormat"];
        }
    }