170 похожих чатов

Всем привет, создаю приложение на ASP.NET Core, есть требования заказчика:

создать 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 страниц

4 ответов

9 просмотров

фронт на ангулярке, а бекенд на коре

а как такую иллюзию будешь создовать без перегрузки страницы?

по первому пункту, можно в кэше

по второму partials,либо хелперы

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
28
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта