Reputation: 1
I am using razor pages Enum:
public enum CustomersFilter
{
Unassigned,
Unverified_Mobile = 1,
Unverified_Email = 2,
Both = 3,
}
payload:
public class UnverifiedCustomersPayload
{
public CustomersFilter Status { get; set; } = CustomersFilter.Unassigned;
public IEnumerable<CustomersFilter> FilterableStatus { get; }
public UnverifiedCustomersPayload()
{
FilterableStatus = Enum
.GetValues(typeof(CustomersFilter))
.Cast<CustomersFilter>()
.Where(o => o > CustomersFilter.Unassigned);
}
public UnverifiedCustomersPayload Filters { get; set; }
HTML:
<select class="form-control"
asp-for="Filters.Status"
asp-items="@(new SelectList(Model.Filters.FilterableStatus))">
<option value="0">None</option>
</select>
I am getting data and names but with names Unverified_Email and Unverified_Mobile
but I need them as Mobile Unverified and Mobile Unverified
How can I do that?
Upvotes: 0
Views: 1891
Reputation: 8915
If you will use the Display
attribute then not necessary to define the <option value="0">None</option>
. The Unassigned
value already set to 0
value by default. Therefore it's necessary only add a description for it.
public enum CustomersFilter
{
[Display(Name = "None")]
Unassigned,
[Display(Name = "Mobile Unverified")]
Unverified_Mobile = 1,
[Display(Name = "Email Unverified")]
Unverified_Email = 2,
[Display(Name = "Both")]
Both = 3,
}
public class UnverifiedCustomersPayload
{
public CustomersFilter Status { get; set; } = CustomersFilter.Unassigned;
}
The view part can be set as follow:
@using WebApp.Models
@model UnverifiedCustomersPayload
<select class="form-control"
asp-for="Status"
asp-items="@Html.GetEnumSelectList<CustomersFilter>()">
</select>
The GetEnumSelectList
method generates a SelectList
object for an enum.
Upvotes: 2
Reputation: 34152
Add Display Attribute to them:
using System.ComponentModel.DataAnnotations;
public enum CustomersFilter
{
Unassigned,
[Display(Name="Unverified Mobile")]
Unverified_Mobile = 1,
[Display(Name="Unverified Email")]
Unverified_Email = 2,
Both = 3,
}
Upvotes: 1