Отправка данных между страницей asp.net и всплывающей страницей? - PullRequest
2 голосов
/ 29 декабря 2008

Каковы различные способы связи между страницей asp.net и всплывающей страницей? Строки запроса и т. Д. Что наиболее безопасно?

Ответы [ 5 ]

1 голос
/ 29 декабря 2008

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

<img style='cursor:hand;' alt="Open Note" onclick="javascript:window.open('NoteEdit.aspx?T=3&UID=<%#NoteUID%>', 'Note', 'HEIGHT=400,WIDTH=420');" src="images/Note.gif" />

Обратите внимание на аргумент замены NoteUID.

Более интересный вопрос - как передать информацию обратно в всплывающее окно. Чтобы сделать это, начните с этого JavaScript:

<script type="text/javascript">
    function OpenHRAResults()
    {
        opener.location.href="<%#DestName%>";
        window.close();
    }
</script>

Это взято из кода, в котором я заново открываю определенную страницу, но, как вы можете догадаться, вы можете делать все что угодно с окном «opener» (окном, которое выскочило во всплывающем окне).

Надеюсь, это поможет ...

1 голос
/ 29 декабря 2008

Если вы говорите о реальной всплывающей странице, где вы используете window.open из javascript. У вас есть строка запроса и Javascript как ваши единственно реальные доступные варианты для передачи информации между.

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

0 голосов
/ 17 января 2009

Вам не нужно отправлять реальные данные во всплывающее окно. Просто создайте GUID на открывающей странице. Создайте класс в asp.net, который будет представлять все данные, которые вам нужно отправить между всплывающей страницей и страницей открытия. Например всплывающие данные Сохраните сериализованный класс в Session с GUID в качестве имени Session [Guid] = объект класса Сессия [Guid] = popupdata;

Откройте всплывающее окно с помощью f.i. ~ / Popupwindow.aspx? PageId = Guid Получите объект сеанса с повторным вызовом Session [Guid] (Guid исходит из строки запроса PageID.

поэтому на всплывающей странице вызовите popupdata data = (popupdata) Session [Guid];

А потом делай все, что угодно с данными.

Если данные изменяются во всплывающем окне, вы можете снова сохранить их в переменной Session и отправить его обратно на открывалку ...

Очень безопасно, так как данные не отправляются клиенту.

0 голосов
/ 29 декабря 2008

Мы стараемся по возможности избегать строк запросов, иногда они слишком удобны. В этих случаях мы всегда шифруем строку запроса. Есть несколько способов сделать это - пример одного подхода:

http://www.codeproject.com/kb/web-security/querystringencryptionnet.aspx

0 голосов
/ 29 декабря 2008

Несколько методов

  • Строки запроса (window.open ('/ users / 123' ..)
  • Javascript (window.opener)
  • HTTP POST (откройте всплывающее окно с помощью javascript, установите для цели формы его имя в качестве цели и сообщения)
  • Сеансы или другие методы на стороне сервера

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

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

...