asp.net mvc или javascript возвращают результаты другой страницы методу

#c# #javascript #continuations

#c# #javascript #продолжения

Вопрос:

Возможно ли, чтобы результаты с другой страницы возвращались методу JavaScript или действию контроллера C #?

У меня есть общая сложная страница, которая используется по всему моему веб-сайту, которая в настоящее время используется для установки одной переменной для пользовательских данных в серверной части C #. Когда пользователь завершает общую сложную страницу, я возвращаюсь на страницу ссылки. Страница, на которую я вернулся, содержит вновь выбранную переменную, когда пользователь возвращается по мере ее обновления или, альтернативно, передается в качестве параметра URL на возвращаемую страницу.

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

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

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

Комментарии:

1. Эй, ваше описание сбивает с толку. Можете ли вы немного прояснить это? Звучит так, как будто вы пытаетесь обмениваться данными между двумя разными страницами в двух разных браузерах? Или вы выполняете традиционные обратные отправки на сервер и пытаетесь перенести данные с одной страницы на другую? Не совсем понятно, что вы здесь делаете.

2. @ThinkingSites Нет, я пытаюсь обмениваться информацией между страницами в одном браузере. Что я эффективно пытаюсь сделать, так это использовать мою общую сложную страницу в качестве диалогового окна. Я пытаюсь быть ленивым и избегать передачи любого контекста местоположения на общую сложную страницу. Общая сложная страница в настоящее время использует этот контекст местоположения, чтобы определить, на какую страницу она должна вернуться. Возвращаемой странице передается возвращаемое значение сложной страницы в качестве параметра при ее вызове. Опять же, что я пытаюсь сделать, это быть ленивым и избежать необходимости передавать контекстные данные согласно double.co.nz/scheme/modal-web-server.html .

3. @ThinkingSites Я старый программист Windows, и то, что я пытаюсь эмулировать, — это вызов общего диалога из любой точки программы без необходимости вводить код в диалог, который беспокоится о том, куда он должен возвращаться.

4. На самом деле у вас нет подобных общих ресурсов между Windows в одном браузере, за исключением, возможно, файлов cookie. Существуют такие вещи, как индексированная база данных, которая является общим источником данных для каждого домена, но это может быть не то, что вы ищете, поскольку на самом деле это не обмен сообщениями. Прямо сейчас существует множество вариантов хранения данных HTML5. То, что вы, вероятно, действительно ищете, — это решение ajax, при котором вы возвращаетесь на сервер за необходимыми вам данными, вместо того, чтобы пытаться обмениваться данными между окнами браузера. Какой у вас язык на стороне сервера, это может помочь в определении вашего решения.

5. @ThinkingSites Мой серверный язык — C #. И это моя точная проблема. У меня нет продолжений, доступных на этом языке. Мне было интересно, можно ли адаптировать новые асинхронные функции .NET 4.5 для выполнения этой роли. Снова смотрите double.co.nz/scheme/modal-web-server.html именно для того, что мне нужно. Использование индексированной базы данных все равно потребовало бы от меня написания кода для сохранения контекста запроса, чтобы я мог получить результат, так что это не сэкономит мне никакой работы. Хотя спасибо за идею. Я могу реализовать все это, используя комбинацию внутреннего кода и / или Ajax.

Ответ №1:

Совместное использование данных между веб-страницами без установленного носителя продолжения требует использования где-либо общего состояния, такого как переменные сеанса или файлы cookie. Поскольку каждая страница изменяет состояние, она может вернуться на сервер, обновить этот сеанс, и когда процесс будет завершен, вы прочитаете этот сеанс через ajax и завершите свой процесс.