Как добавить класс в enam и как использовать атрибут Description на странице Razor - PullRequest
0 голосов
/ 08 мая 2020

У меня есть enam по типу

public enum Types
    {
        [Description ("Once")]
        Once = 1,
        [Description ("SpecificDay")]
        SpecificDay = 2,
        [Description ("Daily")]
        Daily = 3,
        [Description ("Weekly")]
        Weekly = 4,
        [Description ("Monthly")]
        Monthly = 5
    }

, и мне нужно отобразить это перечисление на странице. страница отображается в dropdownMenu

<ul class = "dropdownmenu" role = "menuRole">
                        <li role = "main" value = "">
                            <a class="active" role="item" tablindex="11" href="#" case="once"> Once </a>
                        </li>
                        
                        <li role = "main" value = "">
                            <a class="" role="item" tabindex="11" href="#" case="specificday"> SpecificDay </a>
                        </li>
                        <li role = "main" value = "">
                            <a class="" role="item" tabindex="11" href="#" case="daily"> Daily </a>
                        </li>
                        <li role = "main" value = "">
                            <a class="" role="item" tabindex="11" href="#" case="weekly"> Weekly </a>
                        </li>
                        <li role = "main" value = "">
                            <a class="" role="item" tabindex="1" href="#" case="monthly"> Monthly</a>
                        </li> 
                    </ul>

в этом перечислении print all. Спереди я получаю значения этого типа, и мне нужно сделать class = active, например:

    Model.Types=Monthly;
    <li role = "main" value = "">
    <a class="**active**" role="item" tabindex="1" href="#" case="monthly"> Monthly</a> 
    </li>
//other without class="**active**"
    <li role = "main" value = "">
    <a class="" role="item" tablindex="11" href="#" case="once"> Once </a>
    </li>
    <li role = "main" value = "">
    <a class="" role="item" tabindex="11" href="#" case="daily"> Daily </a>
    </li>
    <li role = "main" value = "">
    <a class="" role="item" tabindex="11" href="#" case="weekly"> Weekly </a>
    </li>
    <li role = "main" value = "">
    <a class="" role="item" tabindex="1" href="#" case="monthly"> Monthly</a>
    </li> 

на первой открытой странице (в базе данных нет записей и Model = null), class = "active "должен быть установлен автоматически для однократного использования

Я пытаюсь использовать

@foreach (var val in Enum.GetNames (typeof (Types)))
                        {
                            @if (Model == null || Model.Types.ToString (). Length == 0
                             || val == Types.Once.ToString ()
                             && Model.Type.ToString () == val)
                            {
                                <li role = "main" data-value = "@ val.ToLowerInvariant ()">
                                    <a class="active" role="item" tabindex="-1" href="#" data-case="@val.ToLowerInvariant()"> @ val.ToLowerInvariant () </a>
                                </li>
                            }
                        }

, но я не знаю, как установить активный класс для одного поля и отобразить Описание

1 Ответ

0 голосов
/ 25 июня 2020

я делаю помощник

public static class EnumHelper
    {
        public static string GetDisplayDescription(this Enum enumValue)
        {
            return enumValue.GetType()
                            .GetMember(enumValue.ToString())
                            .FirstOrDefault()
                            ?.GetCustomAttribute<DescriptionAttribute>()
                            ?.Description;
        }
    }

использую:

@EnumHelper.GetDisplayDescription(@Model.Types)
...