Рекомендации по работе с веб-приложениями?

Примечание. По рабочему процессу я не имею в виду технологию документооборота, такую ​​как Foundation Workflow.

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

1) Выберите один из параметров. Отправить. 2) Заполните страницу с результатами. Вносить изменения. Отправить. 3) Сделайте что-то, основанное на предыдущих результатах. Отправить. 4) Подтвердите предыдущие действия. Отправить. 5) Перейти к 1.

Сайт электронной коммерции с корзиной покупок был бы примером учебника.

Теперь есть несколько способов справиться с этим. Мой вопрос: какой рекомендуемый способ сделать это в asp.net? В PHP или ISAPI я бы просто использовал стандартные элементы управления html, получал сообщения и делал с ними все, каждый на другой странице.

ASP.NET, похоже, более ориентирован на решения с одной страницей. Выполняйте свою работу, отправляйте назад, а затем покажите свои результаты на одной странице. Двигайтесь до конца, используя что-то вроде MultiView или UpdatePanels для выполнения задания. Но ключевым моментом, вы не отправляете обратно на другую страницу.

Теперь я понимаю, что в последних версиях Microsoft добавила обратные ссылки на страницы в .NET, но это кажется менее искушенным и довольно громоздким. Трудно работать с данными, которые были отправлены обратно, если вы не открыли его через свойства или что-то с вашей предыдущей страницы.

Как вы справляетесь с описанным выше сценарием? Вы используете мульти-просмотр или обновленную панель и делаете все это на одной странице? Или вы делаете это на нескольких страницах? Каковы ваши лучшие практики в этом отношении? У вас есть какие-то конкретные проекты, которые вы склонны использовать? Как вы собираетесь структурировать рабочий процесс сайтов?

Ответ 1

существует несколько способов сделать это (помимо мульти-просмотра):

1, asp.net доза поддержки поддержки, goggle Page.Request.Form[item] http://msdn.microsoft.com/en-us/magazine/cc164151.aspx#S3

2, вы можете сохранить свои временные данные в таблице temp базы данных, а затем, когда пользователи просматривают каждую страницу, все, что им нужно сделать, это ссылаться на идентификатор данных temp в базе данных. (Строка запроса)

3, вы также сможете сохранять свои временные данные в качестве объекта в своем сеансе, поэтому все ваши страницы в "рабочем потоке" могут ссылаться на сеанс, а затем создавать на нем манипуляции.

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

Ответ 2

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

Вы также можете посмотреть Wizard Web Server Control, который обрабатывает сантехнику для навигации между этапами процесса. Чтобы получить некоторые идеи о том, как работает управление, посмотрите Мастер управления ASP.NET 2.0.

Ответ 3

Mystere Man, я прочитал ваш вопрос, спрашивая, как мы это делаем. Для меня у меня есть одно слово: Контекст. Держите его в контексте. Я объясню.

Вы можете создать все веб-приложение с одной страницы, если хотите. Технически это возможно, хотя это было бы так же запутанно, как и все. Я объединяю свою функциональность в логические части, такие как "Выбор продукта". Я использовал одну страницу, группирующую процесс "Проверка", но с большим отвращением, что теперь, когда моей команде приходилось входить в процесс в определенных точках, таких как автоматическое добавление продуктов в корзину покупок, а затем отображение последней страницы в выезд. (подумайте о бесплатной загрузке: вам не нужна информация о доставке, формирование биллинга или их имя). С указанным выше номером, если он все включен, я бы сделал его одной физической страницей, но я бы разбил его на многостраничные, если окажется, что мне нужно "вскакивать" в поток. Если вы делаете это на одной странице, вам нужны четкие границы.

Я не использую кросс-проводку. Мне нравится использовать многопользовательские контроллеры. Для меня важно четко определить, для чего нужно каждое представление, чтобы оно было активным. В моем событии загрузки страницы у меня есть один вызов метода, который рассматривает переменные запроса или сеанса или файлы cookie (это мои контейнеры с государственным хранением), и в зависимости от того, что установлено, я делаю активный один вид. В загрузке страницы больше нет кода, вместо этого я использую событие load view для моей загрузки псевдостраницы. Я кодирую все, что должен делать определенный вид.

При таком подходе, я думаю, что ASP.NET MVC-шаблон - это то, куда я должен идти.