[英]How to display enum names on table?
如何在表格中顯示我的枚舉名稱? 我在數據庫中創建了 2 個名為 IsAdmin 和 IsActive 的變量作為 int。 我創建了枚舉文件。 當管理員想要添加用戶時,他/她可以選擇 IsAdmin 和 IsActive 枚舉並顯示他們的枚舉名稱,但是當我在表中顯示我的所有用戶時,我只能看到他們的名稱 integer 值。 我怎樣才能解決這個問題? (我對此進行了很多研究,我添加了一個 GetAttribute() 方法來顯示枚舉名稱,但我無法在索引中顯示這個方法,所以它不起作用。)枚舉
public enum IsActive
{
[Display(Name = "Account Activated")]
Active=1,
[Display(Name = "Account is not Active")]
Passive=2
}
public enum IsAdmin
{
[Display(Name = "Admin")]
Admin = 1,
[Display(Name = "User")]
User= 2
}
添加用戶
<form method="post">
@Html.DropDownListFor(a => a.IsAdmin, EnumHelper.GetSelectList(typeof(LibraryManagementSystem.Enums.IsAdmin)), "Choose")
<br />
@Html.DropDownListFor(a => a.IsActive, EnumHelper.GetSelectList(typeof(LibraryManagementSystem.Enums.IsActive)), "Choose")
<br />
</form>
顯示用戶/索引
@using LibraryManagementSystem.Models
@model List<Table_User>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Users List</h2>
<table class="table table-bordered">
<tr>
<th>Is Account Active?</th>
<th>Admin or User?</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.IsActive</td>
<td>@item.IsAdmin</td>
<td>
<a href="/Admin/UserUpdate/@item.UserID" class="btn btn-danger">Uptade</a>
</td>
</tr>
}
</table>
如果您只想顯示 Enum 的 DisplayName 屬性,簡單的解決方案是添加
@Html.DisplayFor(x => Enum.GetName(typeof(EnumType), item.Enum))
或者,如果您想要一些額外的靈活性和可擴展性,我建議您添加一個擴展方法來檢索顯示名稱
/// <summary>
/// Gets human-readable version of enum.
/// </summary>
/// <returns>DisplayAttribute.Name of given enum.</returns>
public static string GetDisplayName<T>(this T enumValue) where T : IComparable, IFormattable, IConvertible
{
if (!typeof(T).IsEnum)
{
throw new ArgumentException("Argument not of type Enum");
}
DisplayAttribute displayAttrivute = enumValue.GetType().GetMember(enumValue.ToString()).First().GetCustomAttribute<DisplayAttribute>();
return displayAttribute?.GetName() ?? enumValue.ToString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.