создать SPA-подобное приложение, где при нажатии каждой кнопки будет происходить postback - отсылаться запрос на сервер, заново формироваться это же самое представление, но с уже с измененной небольшой частью и отсылаться на отображение клиенту, таким образом будет создаваться иллюзия того, что изменилась только часть страницы. Сейчас каждая страница представляет из себя совокупность вложенных частичных представлений, например:
Window.cshtml
Header.cshtml
Body.cshtml
LeftAreaWidget.cshtml
Table.cshtml
Footer.cshtml
Каждое представление имеет свою viewmodel. Таким образом мы имеем следующее дерево viewmodel'ей:
WindowViewModel.cs
HeaderViewModel.cs
BodyViewModel.cs
LeftAreaWidgetViewModel.cs
TableViewModel.cs
FooterViewModel.cs
Это дерево viewmodel'ей инициализируется, формируется представление и отсылается клиенту. Если, к примеру пользователь кликает по таблице, то отсылается запрос на сервер, изменяется TableViewModel.cs, заново формируется всё представление и отсылается клиенту.
При создании приложения из-за своего небольшого опыта или ещё по каким-нибудь причинам столкнулся с проблемами:
1. Сейчас при выполнении каждого postback'а дерево viewmodel'ей заново инициализируется, предыдущее состояние теряется и отсылается практически пустое представление с небольшими изменениями, вызванными последним запросом. Нужно где-то хранить сотояние дерева viewmodel'ей, где это можно сделать, в Session?
2. Большинство частичных представлений представляют из себя UI-компоненты, которые могут быть переиспользованы на других страницах и при этом их viewmodel'и могут быть по-разному сконфигурированы, в зависимости от страницы, к примеру, tab панель, может использоваться на главной странице и иметь две вкладки и может использоваться на странице обратной связи и иметь три вкладки. Но при этом tab панель должна иметь возможность переключения между вкладками - должен быть контроллер с методом действия, который бы изменял viewmodel у tab панели. Непонятно, как организовать такую архитектуру, чтобы каждая страница могла инициализировать tab панель по-своему, и чтобы, в случае создания для каждой страницы своего контроллера, логика переключения вкладок tab-панели не дублировалась в нескольких n контроллерах для n страниц
фронт на ангулярке, а бекенд на коре
а как такую иллюзию будешь создовать без перегрузки страницы?
по первому пункту, можно в кэше
по второму partials,либо хелперы
Обсуждают сегодня