Должен ли я отправить выбранные данные списка в представление или позволить ему получить сами данные? - PullRequest
0 голосов
/ 13 ноября 2011

У меня есть метод создания в моем контроллере, и это открывает представление. В представлении пользователь может ввести данные для заполнения модели. Некоторые из этих данных поступают из избранных списков. Эти списки выбора заполняются из базы данных.

Я хотел бы знать, должен ли я:

a) Получить данные для списков выбора в контроллере, заполнить поле следующим образом:

public IEnumerable<SelectListItem> Statuses { get { return GetStatusType(); } }

передает статусы в модель, а затем выполняет for () для циклического просмотра статусов и создания списка выбора и параметров HTML

б) Ничего не делать в контроллере и в представлении иметь следующее в модели:

<select id="Q_StatusID" name="Q.StatusID">@Html.Raw(
SelectHelper.Status(false, @Model.PageMeta.StatusID))</select>

Где SelectHelper - это код C #, который получает весь список выбора и параметры HTML.

в) Какой-то лучший способ:

Ответы [ 3 ]

0 голосов
/ 14 ноября 2011
  1. Создайте статический класс Look-up и статический метод для вашего GetStatusType.
  2. Кэшировать все типы состояний после первой загрузки из вашей базы данных.
  3. Вызовите GetAllStatusType из представления для отображения.
0 голосов
/ 14 ноября 2011

Я бы создал модель представления, которая имеет свойство IEnumerable . Затем на ваш взгляд, чтобы отобразить элемент выбора:

@Html.DropDownListFor(model => model.PageMeta.StatusID, new SelectList(Model.Statuses, "Id", "Name"), "Some default which has no value")

Где для идентификатора и имени установлены соответствующие свойства в модели состояния.

0 голосов
/ 13 ноября 2011

Я бы пошел с первым.что-то вроде этого

вспомогательный метод

   public List<SelectListItem> getAllSelectList(List<Items> lists)
            {
                List<SelectListItem> selectListItems = new List<SelectListItem>();
                foreach (Term term in lists)
                {
                    selectListItems.Add(new SelectListItem() { Text = term.yourselectfield, Value = term.your value });

                }
                return selectListItems;
            }

на вашем контроллере

// при условии, что GetStatusType() метод вернет список объектов

ViewData.selectlist=getAllSelectList(GetStatusType());

на ваш взгляд, если вы используете Razor

@Html.DropDownList("selectlist", null, "Choose")

или

<%: Html.DropDownList("selectlist", null, "Choose") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...