Список радиокнопок, флажки, выпадающие списки и списки / списки словарей - PullRequest
0 голосов
/ 09 февраля 2012

Количество информации там (и здесь, в SO) не для того, чтобы преуменьшить ее, но.,,подавляющий.

Существует множество примеров того, как создавать списки переключателей, флажки и раскрывающиеся списки в MVC 3 с перечислениями.Моя проблема (и, вероятно, ответ «Вы не можете этого сделать») заключается в том, что я хочу единообразия в своем коде с щадящим использованием расширений (и большинство примеров имеют различные типы расширений).

Этого достаточно, чтобызаставь мою голову взорваться.

Итак, хотя это может быть повторяющимся, и хотя пост может закрыться, я бы спросил, существует ли элегантный, простой и, возможно, общий набор элементов управления MVC3 для переключателей,флажки и выпадающие списки?

Что я пытаюсь сделать:

Радиопереключатель Я использую их для "Да / Нет", а также для более длинных ответов (Подумайте: полные предложения) что а) не будет соответствовать или действительно не уместится в DropDownList и б) просто выглядеть лучше как выбор, который может рассмотреть пользователь.Я уже использую приведенный ниже код с хорошими результатами, но не знаю, как использовать его для флажков или раскрывающихся списков, если это было возможно.

CheckBoxes Очевидный выбор для "большебольше, чем одна опция, но ограничено вещами, которые должны отображаться.

DropDowns Отлично подходит для 0-5 ответов, как в вариантах: "0 (нет), 1, 2, 3,4, 5 или более ", или простые фразы из 1-3 слов (в противном случае я обращаю внимание на радиокнопки).

Моя проблема: я не программист.Я, конечно, могу отвергнуть себя от этой парадигмы (см. Ниже), к которой я пришел, чтобы слепо обнять (потому что она работает для моих списков радиобуттон), но я хочу что-то многоразовое.Для меня иногда «многоразовое использование» означает подобное.

Моя парадигма (или то, что я считаю похожим и надеюсь, что я могу использовать в флажках или раскрывающихся списках): я использую перечисления / списки словарей для своих радиокнопок следующим образом:

public SomethingList Something{ get; set; }
        public enum SomethingList
        {
            Something_Something1,
            Something_Something2
        }
        public class SomethingDictionary
        {
            public static readonly Dictionary<SomethingList , string> nameDictionary = new Dictionary<SomethingList , string>
            {
            { SomethingList.Something_Something1, "Whatever text I want, whether it's Yes/No for a check box, a simple 1-2 word phrase for dropdowns, or long sentences as I use in my radiobutton lists." },
            { SomethingList.Something_Something2, "Whatever OTHER text I want, whether it's Yes/No for a check box, a simple 1-2 word phrase for dropdowns, or long sentences as I use in my radiobutton lists." },
             };
            static string ConvertSomething(SomethingListnamelist)
            {
                string name;
                return (somethingDictionary.TryGetValue(somethinglist, out name))
                    ? name : somethinglist.ToString();
            }
            static void Main()
            {
                Console.WriteLine(ConvertSomething(SomethingList.Something_Something1));
                Console.WriteLine(ConvertSomething(SomethingList.Something_Something2));
            }
        }

Любые советы / предложения?(Или я смогу продолжить свою парадигму с помощью флажков / выпадающих меню?)

1 Ответ

0 голосов
/ 02 марта 2012

Попробуйте использовать MVCGrabBag .Он имеет общую кодовую базу для всех входов.Он использует перечисления и немного другой стиль, чтобы заставить его работать.Но как только вы обернетесь вокруг основ, вы не будете разочарованы.Все, что вы делаете, это делаете @Html.FullFieldEditor, а все остальное позаботится с кодом.В основном есть Selector.cs и некоторые другие файлы, которые, как и помощник @Html.EditorFor, выясняют, какой ввод создать.И вместо использования набора /EditorTemplates/ у него просто есть один, который обо всем позаботится.

Он выглядит довольно новым, поэтому я верю, что он наберет обороты.Я должен представить для тех из нас, кто не является сверхчеловеческим программистом, что это могло бы облегчить проблему отсутствия какой-либо единой структуры с тем, что существовало с самого начала Интернета (я говорю входные данные).

Удачи.

...