Enum properties should be shown as text on index, details, and delete screens, and should be shown as drop-down lists on create and edit screens.
Suggestions for text to display (thanks to Diego Viera):
Regarding how to Html.EditorFor() could pick the right descriptions for enums, here are some ideas that came to my mind.
-
Default option: Tokenize PascalCase name
public enum Color
{
Blue, // -> Blue
LightBlue, // -> Light blue
...
}
-
DisplayAttribute, non-localized:
public enum Color
{
[Display(Name = "Blue", Description = "Blue color")]
Blue,
[Display(Name = "Light blue", Description = "Light blue color")]
LightBlue,
...
}
-
DisplayAttribute, localized
public enum Color
{
[Display(ResourceType = typeof(DisplayResources), Name = "Blue", Description = "BlueDescription")]
Blue,
[Display(ResourceType = typeof(DisplayResources), Name = "LightBlue", Description = " LightBlueDescription")]
LightBlue,
...
}
-
DiplayAttribute + convention: #3 is actually a lot of repetition. If we could change DisplayAttribute's usage to support using it on enums we could pick resource names by convention. Then the following would be equivalent to the example above:
[Display(ResourceType = typeof(DisplayResources))]
public enum Color
{
Blue,
LightBlue,
...
}