Словарь, перечисление или другая альтернатива для реализации приоритета задачи в MVC? - PullRequest
0 голосов
/ 31 мая 2009

В моей базе данных есть таблица задач с полем приоритета, содержащим целое значение от 1 до 4 в качестве теста. Я использую dbml-файл LINQ to SQL, поэтому у меня есть класс задачи, и я хочу, чтобы в моем представлении текстовое значение приоритета для пользователя отображалось как значение в списке выбора.

Я добавил следующий код в свой класс задач:

    static enum Priorities {
        High = 1,
        Medium = 2,
        Low = 3,
        None = 4
    }

    public String GetPriority {
        get {
            Priorities p = (Priorities)priority;
            return p.ToString();
        }
    }

Я хочу использовать приоритет в раскрывающемся списке, и я не уверен, как это сделать, сначала получая список значений для добавления в список выбора, а затем выбирая правильное значение для объекта задачи: (

Я думал о том, чтобы вместо этого сделать ниже и использовать словарь, но если у кого-то есть какой-то совет или лучшее решение, которое было бы очень полезно, спасибо.

        static IDictionary<string, int> priorityDictionary =
      new Dictionary<string, int>(){
    {"High", 1},
    {"Medium", 2},
    {"Low", 3},
    {"None", 4}
  };

    public static IEnumerable<string> Priorities {
        get { return priorityDictionary.Keys; }
    }

Ответы [ 2 ]

2 голосов
/ 31 мая 2009

Поскольку в конечном итоге вам понадобится это как IEnumerable<SelectListItem>, почему бы не создать ленивое статическое свойство, содержащее его в качестве меню?

private static List<SelectListItem> priorities;
public static IEnumerable<SelectListItem> PriorityMenu
{
    get
    {
         if (priorities == null)
         {
             priorities = new List<SelectListItem>();
             foreach (var i in Enum.GetValues(typeof(Priority)))
             {
                 priorities.Add( new SelectListItem
                                 {
                                     Text = Enum.GetName( typeof(Priority), i ),
                                     Value = i.ToString()
                                 });
             }
         }
         return priorities;
    }
}
0 голосов
/ 11 февраля 2011

Если вы хотите, чтобы ваши строковые представления отличались от их Enum.GetName, сохраняя при этом безопасность типов, проверьте это: C # String enums

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...