I got a date format like:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime? CreatedOn { get; set; }
Now, I want to make every datetime format in my application read from one config file. like:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = SomeClass.GetDateFormat())]
public DateTime? CreatedOn { get; set; }
but this will not compile.
How can I do this?
The problem with this is .NET only allows you to put compile-time constants in attributes. Another option is to inherit from DisplayFormatAttribute
and lookup the display format in the constructor, like so:
SomeClass.cs
public class SomeClass
{
public static string GetDateFormat()
{
// return date format here
}
}
DynamicDisplayFormatAttribute.cs
public class DynamicDisplayFormatAttribute : DisplayFormatAttribute
{
public DynamicDisplayFormatAttribute()
{
DataFormatString = SomeClass.GetDateFormat();
}
}
Then you can use it as so:
[DynamicDisplayFormat(ApplyFormatInEditMode = true)]
public DateTime? CreatedOn { get; set; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With