terry45 terry45 - 6 months ago 68
HTML Question

Html.GetEnumSelectList - Getting Enum values with spaces

I was using

asp-items="@Html.GetEnumSelectList(typeof(Salary))"
in my Razor view with a select tag, to populate the list values based on the
enum Salary
.

However, my enum contains some items which I would like to have spaces within. E.g. one of the items is
PaidMonthly
, but when I display this using
Html.GetEnumSelectList
, I would like it to be displayed as
"Paid Monthly"
(with a space in it)

I tried using the
Description
attribute over each member in the enum, however when the select box renders it uses the raw value only.

Can anyone please help me out with this matter?

(My Code sample) -> Using ASP.NET Core 1.0

Razor View:

<select asp-for="PersonSalary" asp-items="@Html.GetEnumSelectList(typeof(Enums.Salary))">
</select>


Enum Salary:

public enum Salary
{
[Description("Paid Monthly")]
PaidMonthly = 1,
PaidYearly = 2
}

Answer Source

I managed to solve it. I just had to use the other method of GetEnumSelectList<>, and in the Razor view we need to use the Display attribute.

Here is the code:

Razor View:

<select asp-for="PersonSalary" asp-items="Html.GetEnumSelectList<Enums.Salary>()"></select>

Enum Salary:

public enum Salary
{
    [Display(Name="Paid Monthly")]
    PaidMonthly = 1,
    PaidYearly = 2
} 
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download