簡體   English   中英

如何在表上顯示枚舉名稱?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM