Где мне сохранить сложное состояние пользовательского интерфейса приложения MVC?

Я изучал несколько фреймворков MVC (например, rails, merb, cakephp, codeignitier и тому подобное ...)

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

У меня есть пара приложений, созданных на какой-то платформе, построенной на классическом asp.

Этот фреймворк обрабатывает некоторые вещи CRUD немного сложнее, чем примеры, которые я нашел.

Что-то вроде мастер-детали, фильтрация по примеру, разбиение на страницы, сортировка и тому подобное.

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

Для этого у меня есть несколько скрытых входов для сохранения состояния веб-страницы (например, текущий идентификатор, критерии фильтрации, критерии порядка, предыдущее состояние, предыдущее событие, ну, вы поняли)

Как вы думаете, какой подход лучше всего подходит для достижения такой функциональности?

скрытые входы встроены в представление и используются с контроллера ??? (Думаю, это было бы эквивалентом того, что я делаю сейчас в classi asp)

-

(добавлено в ответ на tvanfosson)

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

Я не уверен, каковы преимущества и недостатки использования строки запроса вместо скрытых входов ???

Какое состояние вы сохраняете, что не может быть передано в URL как части пути?

user1228 14.01.2009 20:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
1 368
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Контекстно-зависимые настройки, такие как текущий столбец сортировки или номер страницы, управляются с помощью параметров запроса. Элементы управления разбиением по страницам и сортировки (ссылки) построены с соответствующими параметрами запроса, чтобы «делать правильные вещи» при нажатии и передавать любые необходимые параметры запроса для поддержания или обновления текущего контекста элемента управления. Использование параметров запроса позволяет использовать HTTP GET, который можно добавить в закладки, а не POST. Использование скрытых параметров формы значительно усложняет пользователю сохранение или ввод URL-адреса, который направляет их прямо туда, куда они хотят. Это, вероятно, более полезно для сортировки, чем для разбиения по страницам, но принцип применим в равной степени.

Другие вопросы по теме