Импорт LocalStorage в instance

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
Буду очень признателен за подсказку, как сделать импорт LocalStorage в instance. Я не сильно силен в C#, и перелопатил весь форум, рабочих примеров не нашел.
На скрине наглядно обвел что что нужно заменить на свои данные!
Огромное спасибо за помощь.
2020-04-15_213448.png
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Принципиально C#?

Можно из экшена "Свой JavaScript код":
JavaScript:
localStorage.setItem("persist:root", "some important data");
В настройках экшена поставить выполнять на текущей странице и не забыть указать переменную для возвращаемого значения (даже если ничего не возвращается. В противном случае экшен будет возвращать ошибку).

Если же С# обязателен, то как-то можно JavaScript выполнять и из C#, но как это делается я сейчас не скажу. Это надо либо лезть в документацию, либо гуглить по форуму, где-то эта инфа была.

UPD (17.01.2021):
Есть C# методы для сохранения и загрузки localsStorage - LoadLocalStorage и SaveLocalStorage (с помощью данных методов можно сохранить весь localsStorage, а не его отдельный элемент).

Так же подобные методы существуют для IndexedDB и SuperCookie. Подробности по ссылке - клик
 
Последнее редактирование:
  • Спасибо
Реакции: Kostass

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
Чето не получается, нет рабочего примера ? С# не принципиально.
 

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
В общем разобрался, не могу правильно оформить просто:

JavaScript:
localStorage.setItem("persist:root", "{"preferences":"{\"language\":\"en\",\"culture\":\"en-GB\",\"theme\":\"default\",\"Displayed\":true,\"rehydrated\":true}"}");
2020-04-16_013406.png



Помогите плизз разобраться!
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Необходимо правильно экранировать кавычки внутри передаваемой строки. Об этом можно почитать здесь либо погуглить. Можно воспользоваться https://tools.icoder.uz/json-escape-unescape.php (берём нашу строку, сначала делаем "Разэкранировать", а потом уже "Экранировать".)
В итоге из
{"preferences":"{\"language\":\"en\",\"culture\":\"en-GB\",\"theme\":\"default\",\"Displayed\":true,\"rehydrated\":true}"}
должно получится
{\"preferences\":\"{\"language\":\"en\",\"culture\":\"en-GB\",\"theme\":\"default\",\"Displayed\":true,\"rehydrated\":true}\"}
И уже эту строку используем в ЗП.
 
  • Спасибо
Реакции: dtk77 и Kostass

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
Необходимо правильно экранировать кавычки внутри передаваемой строки. Об этом можно почитать здесь либо погуглить. Можно воспользоваться https://tools.icoder.uz/json-escape-unescape.php (берём нашу строку, сначала делаем "Разэкранировать", а потом уже "Экранировать".)
Спасибо большое за подсказки, вроде как разобрался. Вот так работает:
JavaScript:
localStorage.setItem('formData',    
  JSON.stringify(context.state.formData));
 
  • Спасибо
Реакции: G2Dolphin

G2Dolphin

Client
Регистрация
15.09.2021
Сообщения
2
Благодарностей
1
Баллы
1
В моем случае заработало такое решение:
Присваиваем переменной localStorage нужный текст без экранирования, к примеру:
JSON:
{"https://google.com":{"active_session":"123"}}
далее загружаем в профиль этим кодом:
C#:
instance.LoadLocalStorage(Encoding.UTF8.GetBytes(project.Variables["localStorage"].Value));
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)