Шаблон пользовательского интерфейса, позволяющий пользователю добавлять элемент с неограниченным количеством подпунктов - PullRequest
2 голосов
/ 19 июля 2010

Я пишу приложение ASP.NET. Мне нужно включить страницу, где пользователь может добавить элемент, который имеет несколько наборов подпунктов, каждый из которых не ограничен в количестве. Сами подэлементы содержат от 10 до 15 полей, поэтому требуется немало места для пользовательского интерфейса.

В качестве примера того, что я имею в виду, пользователь должен иметь возможность добавлять бизнес-записи в систему, включая любое количество записей сотрудников и любое количество записей активов.

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

Существует одна кнопка сохранения, которая сохраняет весь граф объектов в базе данных.

Это довольно сложно программировать и поддерживать, и я обычно сталкиваюсь с головной болью, связанной с управлением ViewState для динамических пользовательских элементов управления. Очевидно, что ViewState на странице также может стать довольно большим, что делает страницу довольно медленной.

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

Не могли бы вы предложить какие-либо другие шаблоны пользовательского интерфейса, которые вы могли бы использовать для этого, и какие-либо преимущества или недостатки?

Спасибо

David

Ответы [ 2 ]

1 голос
/ 19 июля 2010

Взгляните на Quince, UX-хранилище шаблонов, которое может помочь вам вдохнуть немного вдохновения: http://quince.infragistics.com/

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

  • Отключить ViewState для неконтекстных элементов (например, меток)
  • Сжать ViewState, определив пользовательский обработчик, который кодирует bzips> base64.Вы будете удивлены тем, сколько места вы в конечном итоге сэкономите на клиенте
  • Сохраните состояние просмотра на сервере, создайте идентификатор запроса и свяжите этот идентификатор с кешем приложения с окном истечения срока действия =продолжительность жизни сеанса (не скользящая), затем замените состояние просмотра гидом вперед и назад.

Приветствия, Флориан

0 голосов
/ 19 июля 2010

Мне нравится ваш дизайн элемента управления множественным просмотром с использованием вкладок для навигации между представлениями. Для меня были времена с большими взглядами и время, когда мне нужно было обойти некоторые шаги. Вы почти на грани контроля мастера, но я вижу, что каждый ваш шаг слишком сложен, чтобы использовать официальный контроль мастера.

В моем случае я разделил каждое представление на определенную веб-страницу. Используя ваш пример, рассмотрите возможность создания трех страниц: Business.aspx, Employee.aspx и Asset.aspx. Если у вас есть код, который проверяет веб-формы, то можете ссылаться на него на каждой из веб-страниц. Я сделал это, потому что в моей ситуации я добавлял много записей на каждом «шаге». Я не хотел беспокоиться о накладных расходах и возможной ошибке, связанной с необходимостью правильного воссоздания состояния просмотра при каждом возвращении сообщения. Ваша страница Business.aspx знает, как позаботиться о себе и быть действительной, не беспокоясь о действительных записях сотрудников или данных. Когда я столкнулся с этой проблемой, мой шаблон многократного просмотра позволил легко разбить представления на отдельные страницы. О, скажем, кто-то обращается непосредственно к Asset.aspx, я бы либо отобразил сообщение, объясняющее, что пользователь бросил оружие, либо создал бы простую форму просмотра, чтобы позволить им выбрать соответствующий ресурс и / или сотрудника, прежде чем можно будет добавить актив.

...