powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Переход на новую страницу
25 сообщений из 28, страница 1 из 2
Переход на новую страницу
    #33296887
Andrew_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я недавно начал использовать ASP.NET. Подскажите как можно организовать переход на страницу(пока что использую Response.Redirect(url))? Также можете подсказать как передавать данные на новую страницу -- пока что использую Cookies, но они позволяют передавать только текст, а как можно передать что-то свое?
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33296907
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Session() - любой объект
Session("MyDataTable")=mydatatable
2. request.querystring
mypage.aspx?uid=1
request.querystring("UID")
.....
куки для передачи - это уже экстрим
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33296910
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот способ hDrummer-а, взятый из 1-го номера его журнала "Алгоритм".
(hDrummer это известный учёный)
Вместо Response.Redirect используй Server.Transfer - иначе жди проблем из-за кеширования сессионных переменных. Ну а переменные через сессию передавай:
Session["переменная"]="значение";
Max Pro
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33299741
Vadimek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы рекомендовал набрать в Гугле :
Response.Redirect vs Server.Transfer
Посмотри, в чём разница и так будешь знать
что выбрать в каждом конкретном случае .
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33299969
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ на вопрос №1:
Разработка Web-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET Официальное пособие Microsoft для самостоятельной подготовки
Москва, 2003 стр 164 - 171
Занятие 3. Переход между формами
Данные, связанные ссылками, — это сущность Web. В Web Forms гиперссылки и методы
перехода являются тем «цементом», который связывает Web-формы в единое приложе-
ние. ASP.NET поддерживает несколько способов перехода между страницами в приложе-
ниях, отличающихся методикой отображения и обмена данными между страницами.
На этом занятии вы узнаете об использовании различных способов перехода между
страницами в коде и HTML.
Изучив материал этого занятия, вы сможете:
J перечислить способы перехода между страницами в приложении Web Forms;
S выбрать метод перехода, соответствующий задаче программирования;
S сохранять состояние отображения формы между запросами;
S обрабатывать вторую \№Ь-форму, не покидая текущую Web-форму;
S отображать страницу в новом окне браузера и управлять новым окном
из серверного кода.
Продолжительность занятия — около 35 минут.
Методы перехода между страницами
ASP.NET поддерживает пять различных способов перехода между страницами в при-
ложениях (таблица 4-8).
Таблица 4-8. Способы перехода между страницами
Способ перехода Назначение
Элемент управления Hyperlink Переход на другую страницу
Метод Response.Redirect Переход на другую страницу в коде, эквивалент щелчка
гиперссылки
Метод Server. Transfer Закрывает текущую Web-форму и начинает исполнение
другой Web-формы. Работает только при переходе
между страницами Web Forms (.aspx)
Метод Server.Execute Начинает исполнение новой Web-формы, не закрывая
текущую, при этом содержимое обеих форм объеди-
няется. Работает только при переходе между страницами
Web Forms {.aspx)
Сценарий Window.Open Открывает страницу на клиенте в новом окне браузера
Использование гиперссылок и перенаправления
Серверный элемент управления Hyperlink отвечает на инициированное пользователем со-
бытие click отображением страницы, заданной его свойством NavigateURL. Элемент уп-
равления Hyperlink не поддерживает никаких пользовательских событий на стороне сер-
вера. Для обработки события click в коде воспользуйтесь серверными элементами управ-
ления LinkButton или ImageButton.
Объекты LinkButton и ImageButton выполняют переход при помощи метода Redirect
объекта Response:
Visual Basic .NET
Private Sub LinkBjtton1_Click(ByVal sender As System. Object,
ByVal e As System. EventArgs) Handles LinkButtonl. Click
Отобразить следующую страницу.
Response. Redirect ( "NextPage.aspx")
End Sub
Visual C#
private voic LinkButton1_Click(object sender. System. EventArgs e)
{
// Отобразить следующую страницу.
Response. Redirect ("NextPage.aspx");
Использование метода Transfer
Применение метола Transfer весьма напоминает обработку гиперссылки или использова-
ние метода Redirect за исключением того, что метод Transfer может сохранять между зап-
росами некоторые данные исходной страницы. Если установить его аргумент preserveForm
в True, то свойства формы QueryString, VlewState и сведения об обработчиках события теку-
щей формы станут доступными из целевой формы.
Прежде чем вызывать метод Transfer со свойством preserve Form, установленным в True,
необходимо присвоить значение False атрибуту EnableView State Mac страничной директивы
Page. По умолчанию ASP.NET хеширует данные состояния отображения. Если атрибут
EnableView Smte Mac определен как False, то хеширование не выполняется и данные состо-
яния отображения могут быть прочитаны после перехода на другую Web-форму, Следую-
щий код демонстрирует, как отменить хеширование и сделать состояние отображения до-
ступным после перехода на другую страницу:
Visual Basic .NET
<%@ Page language="vb" EnableViewStateMac-"false"
Codebehind="RedirectNTransfer.aspx. vb"
Inherits="vbNavigateSnippet.WebForm1" %>
Visual C#
<%@ Page lariguage="c#" EnableViewStateMac="false"
Codebehind="RedirectNTransfer. aspx. cs" AutoEventWireup=" false"
Inherits-"csNavigateSnippet.WebForrn1" %>
Следующий обработчик события ImageButton демонстрирует передачу данных между
формами с помощью метода Transfer
Visual Basic .NET
1 Webforml.aspx
Private Sub imgTransfer_Click(ByVal sender As System. Object,
ByVal e As System. Web. UI.ImageClickEventArgs)
Handles imgTransfer. Click
7-531
"186 Создание пользовательского интерфейса Глава 4
Перейти на другую Web-форму, сохранив состояние отображения.
Server.Transfer("Webform2.aspx", True)
End Sub
Visual C#
// Webforml.aspx
private void ImageButton1_Click{object sender,
System.Web.UI.ImageClickEventArgs e)
{
// Перейти на другую Web-форму, сохранив состояние отображения.
Server. Transfer("Webf о rm.2. aspx", trje):
}
Для извлечения данных из состояния отображения исходной страницы используется
метод Form объекта Request. Следующий код отображает на форме Webform2.aspx значе-
ния элементов управления (значение Text Box, а также координаты X и Y щелчка Image-
Button), принадлежащих форме Webforml.aspx.
Visual Basic .NET
' Webform2.aspx
Private Sub Page_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Loac
Dim colForm As
System.Collections.Specialized.NameValueCollection
Получить данные из исходной Web-формы.
colForm = Request.Form
Отобразить значение поля, принадлежащего Webforml.
Response.Write("TextBox1.Text: " &
colForm.Item(""extBox1") & "<br>")
1 Отобразить координаты щелчка.
Response.WriteC'ImageButton X, Y coords: " &
colForm.ItemC'imgTransfer.x") & ", " &
colForm.ItemC'imgTransfer.y") & "<br>")
End Sub
Visual C#
// Webform2.aspx
private void Page_Load(object sender, System.EventArgs e)
{
System.Collections.Specialized.NameValueCollection colForm;
// Получить данные из исходной Web-формы.
colForm = Request.Form;
// Отобразить значение поля, принадлежащего Webforml.
Response.Write("TextBox1,Text: " + colForm["TextBox1"] + "<br>");
// Отобразить координаты щелчка.
Response.Write("ImageButton X, Y coords: " +
co!Form["imgTransfer x"] + ", "
•*- co!Form["iingTransfer.у"] + "<br>")
Метода Transfer объекта Server позволяет передавать значения элементов упраршения
между последовательными запросами (рис. 4-20).
I г.-.и : •••'• '. 'f
.1., -..,..[. '<.-. .!>- r.^.r, ||Ь,„,
--^ ----- ... --- --
.. ^o,4.--1,-^wMraawb4»t«Mp»Wlvl™vig»cninci)ilrTrm!fe..eB.
pfriis is'swn'rTlaitt'
TEC Has и somr tea
ImagcButton X. Y cowds 14. 86
Destination Form
Рис, 4-20, Работа метода Transfer объекта Server
Примечание Методы Transfer и Execute объекта Server работают исключительно с Web-
формами. Попытка использования этих методов для перехода на HTML-страницу приведет
к ошибке времени выполнения.
Использование метода Execute
Метод Execute объекта Server позволяет обрабатывать вторую Web-форму, не покидня пер-
вую. Таким образом, при помощи этого метода удается направлять результаты обработки
одной Web-формы в определенную область другой формы. Как и в случае Transfer, перед
вызовом метода Execute необходимо установить атрибут EnableViewStateMac в False, чтобы
отменить хеширование состояние отображения.
Следующий код исполняет Web-форму Table.aspx и отображает результаты на текущей
странице при помощи элемента управления Literal:
Visual Basic .NET
Private Sub butExecute_Click(8yVal sender As System.Object,
ByVal e As System.EventArgs) Handles butExecute.Click
Dim swrTarget As New System.10.StringWriter()
1 Обработать Web-форму и сохранить результат.
Server,Execute("Table.aspx", swrTarget)
' Отобразить результат с помощью элемента управления Literal.
litTable.Text = "<h2>Table Res;ults</h2>" & swrTarget.ToString
End Sub
Visual C#
private void butExecute_Click(object sender, System. EventArgs e)
{
System. 10. St'ingWriter swrTarget - new
System. 10. StringWriter();
// Обработать Web-форму и сохранить результат.
Server. Execute ( "Table. aspx", swrTarget);
// Отобразить результат с помощью элемента управления Literal.
litTarget.Text = "<h2>Table Results</h2>" +
swrTarget. ToStringO;
Второй аргумент метода Execute является необязательным. Если опустить его, резуль-
тат обработки Web-формы будет направлен на текущую страницу. В результате содержи-
мое страниц объединяется, а их серверные элементы управления могут реагировать на
события, инициированные пользователем (рис. 4-21).
Объединяя Web-формы с помощью метода Execute, не забывайте вот о чем: если вторая
Web-форма генерирует событие postback, то первая Web-форма будет очищена. Поэтому
объединение Web-форм полезно, главным образом, при отсутствии на второй Web-форме
элементов управления, вызывающих возврат страницы.
. . . . . . . .
Рис. 4-21. Работа метода Execute объекта Server
Отображение страницы в новом окне браузера
Для запуска нового экземпляра браузера предназначен метод Open клиентского объекта
Window. Поскольку новое окно генерируется на стороне клиента, его удается создать толь-
ко при помощи клиентского сценария, но его содержимым и внешним видом допустимо
управлять и с сервера.
Следующее определение HTML-элемента управления Button демонстрирует простей-
ший вариант использования метода Window.Open (см. строку, выделенную полужирным
шрифтом):
<INPUT style="Z-INDEX: 102; LEFT: 55px; WIDTH: 81px; POSITION: absolute;
TOP: 156px; HEIGHT: 24px" onclick="wirdow.open( 'webform2.aspx')" type="sut)rnit"
value="New Window">
Чтобы получить возможность задавать целевой URL с помощью переменной, замени-
те webform2.aspx следующим тегом:
<INPUT style="Z-INDEX: 102; LEFT: 55px; WIDTH: 81px; POSITION: absolute;
TOP: 156px; HEIGHT: 24px" onclick="window.open( '<%# urlTarget %> )"
type="submit" value="New Window">
Чтобы серверный код получил возможность обновлять целевой URL, используйте от-
крытую (Public) переменную и привязку данных. Следующий обработчик события Page_Load
задает целевой URL и во время загрузки страницы обновляет его с использованием свя-
занных данных:
Visual Basic .NET
Public urlTarget As String
Private Sub Page_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
urlTarget = "webform2.aspx"
Page.OataBindO
End Sub
Visual C#
public string urlTarget;
private void Page_Load(object sender, System.EventArgs e)
<
urlTarget - "webform2.aspx";
Page.DataBindO;
}
Поскольку метод Window.Open поддерживает множество аргументов, управляющих раз-
личными функциями новых окон браузера, для управления ими можно создать класс.
Классы инкапсулируют всевозможные параметры, облегчая управлением ими в ООП.
Обработчик события Page_Load и определение класса, показанные ниже, демонстрируют
управление размерами, размещением и URL нового окна из серверного кода с использо-
ванием класса Browser Window:
Visual Basic .NET
Public urlTarget As New BrowserWindowO
Private Sub Page_Load(ByVal sender As System.Object, _
Создание пользовательского интерфейса Глава 4
ByVal e As System.EventArgs} Handles MyBase.Load
With urlTarget
' Задать URL для нового окна.
.URL = "HTMLPage1.htm"
.Top - 100
.Left = 100
.Width - 400
.Height = 400
End With
1 Обновить HTML-кнопку.
Page.DataBindO
End Sub
Это класс, управляющий новыми окнами браузера, создаваемыми
при помощи сценариев,
Показанные здесь настройки по умолчанию совпадают с таковыми браузера,
Public Class Browser-Window
Строка адреса по умолчанию пуста (blank).
Public URL As String = "aboutiblank"
Целочисленные аргументы по умолчанию равны 0.
Public Height As Integer = 0
Public Width As Integer = 0
Public Top As Integer = 0
Public Left As Integer = 0
Аргументы типа булевых, 0 = "нет": 1 = "да",
Public ChannelMode As Integer = О
Public Directories As Integer = 1
Public FullScreen As Integer = 0
Public Location As Integer = 'I
Public Resizable As Integer - 1
Public ScrollBars As Integer -= 1
Public Status As Integer = 1
Public TitleBar As Integer = 1
Public ToolBar As Integer = 1
Public MenuBar As Integer - 1
End Class
Visual C#
public BrowserWindow urlTarget = new BrowserWindowO;
private void Page_Load(object sender, System.EventArgs e)
{
jrlTarget.URL = "Execute.aspx";
urlTarget,Top - 100;
urlTarget,Left = 100;
urlTarget.Width = 400;
urlTarget.Height = 400;
// Это класс, управляющий новыми окнами браузера, создаваемыми
// при помощи сценариев.
// Показанные здесь настройки по умолчанию совпадают с таковыми браузера,
public class BrowserWindow
{
// Строка адреса по умолчанию пуста (blank).
public string URL = "about:blank";
// Целочисленные аргументы по умолчанию равны 0.
public int Height = 0;
public int Width - 0;
public int Top = 0;
public int Left - 0;
// Аргументы типа булевых, 0 - "нет"; 1 - "да",
public int CnannelMode - 0:
oublic int Directories = 1;
public int FullScreen = 0;
public int Location = 1;
public int Resizable - 1;
oublic int ScrollBars = 1;
public int Status - 1;
public int TitleBar = 1;
public int ToolBar = 1:
public int MenuBar = 1;
}
HTML-код кнопки, берущий параметры нового окна из экземпляра показанного выше
класса, выглядит примерно так (переменные, предоставляемые сервером, выделены полу-
жирным шрифтом):
<INPUT style="Z-INDEX: 103; LEFT: 25px; WIDTH: Т26рх; POSITION: absolute;
TOP: 60px; HEIGHT: ЗЗрх" type="button" value="Show New Window"
onclick-"window.open('<%# urlTarget.URL %>', null,
%# urlTarget.Height %>,
urlTarget.Width %>, top=<%# urlTarget.Top %>,
left=<%# urlTarget.Left %>, channelmode=<%# urlTarget.ChannelMode %>,
directories=<%# urlTarget.Directories %>,
fullscreen=<%# urlTarget.FullScreen %>,
location-<%fl urlTarget.Location %>,
тепиЬаг=<%# urlTarget.MenuBar 56>,
resizable=<%# urlTarget.Resizable %>,
scrollbars=<%# urlTarget.ScrollBars %>,
status=<%# urlTarget.Status %>,
titlebar=<%# urlTarget.TitleBar %>,
toolbar=<%# urlTarget.ToolBar %>')">

Ответ на вопрос № 2:
Абсолютно согласен с big-duke ...
big-duke 1. Session() - любой объект
Session("MyDataTable")=mydatatable
2. request.querystring
mypage.aspx?uid=1
request.querystring("UID")

P.S. Извиняюсь, что №1 - так не разборчиво - лень чистить почле .pdf Будут вопросы - кричи ;)
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33359729
mekesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу вставить свои "пять копеек" и получить хотя бы "три" :-)
Есть две странички, допустим, a.aspx и b.aspx. В реализации Page_Load
страницы a.aspx есть такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
private void Page_Load(object sender, System.EventArgs e)
{
 if (this.IsPostBack)
 {
  // переход на страницу b.aspx
 }
}
так вот, если использовать Response.Redirect("b.aspx") -- в строке
адреса браузера (IE) после перехода (по сабмиту формы) отображается
http://.../b.aspx, а если же использовать
Server.Transfer("b.aspx") -- остается все тот же
http://.../а.aspx. Неужели так и должно происходить?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33359977
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и должно быть, ибо по работа формы a.aspx не прерывается при переходе на b.aspx.
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33360086
mekesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron
....работа формы a.aspx не прерывается при переходе на b.aspx.


А как же тогда следующее:
.NET Framework Class Library
HttpServerUtility.Transfer Method
Terminates execution of the current page and begins execution of a new page
for the current request.

Может дополнительно чего-то сделать нужно с самим запросом (request)?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33360275
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выдержка из постаПрименение метола Transfer весьма напоминает обработку гиперссылки или использование метода Redirect за исключением того, что метод Transfer может сохранять между запросами некоторые данные исходной страницы. Если установить его аргумент preserveForm в True, то свойства формы QueryString, VlewState и сведения об обработчиках события текущей формы станут доступными из целевой формы.

ну типо читаем оп русски... или не читаем... как душе угодно ;)
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33360441
mekesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 vladgrig
Так как последним спрашивал я, то решил что Ваш пост адресован мне...

Не сомневайтесь, с Вашим предыдущим постом я ознакомился. Но мой вопрос
заключается в следующем: почему при использовании Server.Transfer адрес
броузере остается прежним, да и поведение форм достаточно сомнительное (по
сабмиту целевой формы возвращаюсь к первой)...
может я его не совсем корректно использую?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33360531
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё верно, после сабмита вы возвращаетесь к предыдущей.
Server.Transfer и очень удобен для того, чтобы что-то сделать на вызванной странице, а затем вернуться к вызывающей, не потеряв при этом viewstate оной. Более того этот метод может работать быстрее чем Response.Redirect. Неудобство - не всегда хочется, после постбэка возвращаться к вызывающей форме, хотя можно решить и эту проблему.
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33360547
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторможет я его не совсем корректно использую?
не исключаю такой возможности...
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33360711
mekesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, если возвращает по сабмиту целевой формы к начальной, чего ж этим не
воспользоваться?!... Изменил немного структуру: установил страничку b.aspx
стартовой (base), при загрузке которой проверяю наличие переменной сессии -
если таковой нет -- Server.Transfer("a.aspx") (authorization), при постбэке
которой и формируется эта переменная...

Итак, запускаю проект... загружается страничка b... переменная не найдена...
загружается страничка a... вводим значения полей, нажимаем Enter, по
которому <INPUT type="image"> инициализирует сабмит формы...
Но после ее сабмита управление страничке b не возвращается, а в адресной
строке браузера появляется "http://.../a.aspx"!
Это как понимать?!


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33361043
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему и нет? Вы же не перешли на страницу c.aspx. Так что всё верно, хоть запостбэчься на b.aspx, а всё равно хранится информация о старнице, с которой пришёл (a.aspx), и потому видимое название страницы a.aspx - как бы указывает на ту страницу откуда пришли, и о которой сервер 'помнит'. Перейдите с b.aspx на c.aspx, будете видеть b.aspx, а история о a.aspx пропадёт (я так предполагаю).
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33361487
mekesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опытным путем получено следующее...
Возврат после сабмита целевой формы (b) в вызывающую (a) происходит если
форма b не является серверной (в смысле не runat=server)
Именно при таком условии адрес в браузере после сабмита b остается
неизменным (http://.../a.aspx)
В противном случае возврат в вызывающую страницу не происходил...


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33361975
mekesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх, кажись, осталось за малым :-)
из моего же постаНу, если возвращает по сабмиту целевой формы к начальной, чего ж этим не воспользоваться?!... Изменил
немного структуру: установил страничку b.aspx стартовой (base), при загрузке которой проверяю наличие переменной сессии - если
таковой нет -- Server.Transfer("a.aspx") (authorization), при постбэке которой и формируется эта переменная...
в настоящей реализации имеем следующее:
в PageLoad стартовой страницы (basepage)
Код: plaintext
1.
2.
if (Session["sqlConnection"]== null)
  Server.Transfer("authorization.aspx",true);
в PageLoad страницы автоизации (authorization)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
bool IsPostBack= (Session["authorization.aspx.IsPostBack"]!= null);
// такая конструкция используется потому что форма не является серверной
if (IsPostBack)
{
 System.Data.SqlClient.SqlConnection sqlConnection= null;
 try
 {
  sqlConnection= new System.Data.SqlClient.SqlConnection(string.Format("Server=DBSERVER;User ID={0};Password={1};Integrated
Security= false;Persist Security Info=False;database=master;",Request.Form["user"], Request.Form["pwd"]));
  sqlConnection.Open();
 }
 catch
 {
  sqlConnection= null;
 }
 finally
 {
  Session["sqlConnection"]= sqlConnection;
  Session.Remove("authorization.aspx.IsPostBack");
  if (sqlConnection!= null)
  {
   sqlConnection.Close();
   Server.Transfer(Request.Path,true);
  }
 }
Session["authorization.aspx.IsPostBack"]= true;

Буду признателен ответившим на такие вопросы:
1) Если форма авторизации будет серверной, то Request.Path не вернет адрес страницы, за которой обращались до трансфера. Каким тогда
образом получить этот адрес? Сохранять в сессии перед самим трансфером?
2) После сабмита формы авторизации формируется история, в которой тоже базовая страница. По какой причине она возникает? Это
победить можно?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33361982
mekesha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мое предположение на предмет формирования узла в истории: после сабмита добавляются параметры (POST) авторизации и передаются в
базовую страницу, т.к. флажок preserveForm включен.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Переход на новую страницу
    #33362186
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНу, если возвращает по сабмиту целевой формы к начальной, чего ж этим не воспользоваться?!... Изменил
немного структуру: установил страничку b.aspx стартовой (base), при загрузке которой проверяю наличие переменной сессии - если
таковой нет -- Server.Transfer("a.aspx") (authorization), при постбэке которой и формируется эта переменная...

Ну логон по науке делался када-то так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Web.Config

    <!--authentication mode="Windows"/--> 
    <authentication mode="Forms"> 
		<forms
			loginUrl="default.aspx"
			timeout="15" >
		</forms>
	</authentication>

Код: plaintext
1.
2.
3.
4.
default.aspx.vb

if tbUserName.Text = "user" and tbUserPwd.Text = "password" Then
  FormsAuthentication.RedirectFromLoginPage(tbUserName.Text, False)
End If

Всего
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Переход на новую страницу
    #38354719
ZardoZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот у меня проблема под такой же темой, поэтому решил новый топик не создавать.

У меня есть DevExpress GridView и у него есть событие SelectRecord, которое вызывается при выделении записи в гриде.
Я хочу его задействовать, чтобы узнать выбранную строку и загрузить следующую страницу, где будут уже детальные данные.
Нигде, к сожалению, не нашел примеров, как это нужно делать.

Так вот т.к. я выполняю щелчок по строке для выбора, то IsPostBack == true.
И всё, теперь я не могу в событии использовать Server.Transfer(). "Server.Transfer не возможно вызвать при обратном вызове страницы". Так что делать, как обычно это делают?

Вроде тривиальная задача шелкнул по записи, получил данные и открылась другая страница(или с другой страницы позже получил данные через PreviousPage), а я всю ночь искал и ни одного примера нет.
...
Рейтинг: 0 / 0
Переход на новую страницу
    #38354975
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZardoZ,

Мягко говоря, это совсем другая тема. В девэкспрессе должно быть клиентское событие на выбранную строку. Сделай в обработчике что-то типа window.location.replace("NewPage.aspx");
...
Рейтинг: 0 / 0
Переход на новую страницу
    #38355240
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew_SQL,

можна передавать данные используя делегаты

ну что то

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class TestEventArgs : EventArgs
{
    public int test { get; set; }

    public TestEventArgs(int i)
    {
        this.test = i;
    }
}

public delegate void TestEventHandler(object sender, TestEventArgs e);



ну и вызывать событие там где надо
...
Рейтинг: 0 / 0
Переход на новую страницу
    #38355341
ZardoZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarlexZardoZ,

Мягко говоря, это совсем другая тема. В девэкспрессе должно быть клиентское событие на выбранную строку. Сделай в обработчике что-то типа window.location.replace("NewPage.aspx");

Там есть аналогичное клиентское событие, но к сожалению window.location.replace("NewPage.aspx") и д.р. функции из javascript не сохраняют объект PreviousPage, тут я так понимаю нужен только Server.Transfer(). Даже, когда я пытаюсь вызвать серверный метод из js через PageMethods.MyStaticServerMethod(), то, когда пытаюсь обратиться к Server.Transfer в методе на стороне сервера, получаю, что Server вне области видимости из этого метода.

VIT2708Andrew_SQL,

можна передавать данные используя делегаты

ну что то

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class TestEventArgs : EventArgs
{
    public int test { get; set; }

    public TestEventArgs(int i)
    {
        this.test = i;
    }
}

public delegate void TestEventHandler(object sender, TestEventArgs e);



ну и вызывать событие там где надо

К сожаление не понимаю как это мне поможет. И где нужно вызывать событие. С ASP.NET только начал знакомиться.

Может просто Server.Transfer() не предназначен для того, чтобы менять страницу в случае реакции на действия пользователя и следовательно объект Page.PreviousPage используется только в каких-то специфических случая, а в остальных нужно передавать данные через сессию и переключать страницу через js? Просто механизм есть, вроде как раз для таких случаев, а не работает (что для MS не редкость конечно).

Как обычно выполняется такая тривиальная задача как клик по строке в Gridview и передача данных в следующую страницу?
...
Рейтинг: 0 / 0
Переход на новую страницу
    #38355353
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZardoZ,

... вообще говоря, если пересмотреть подход, то можно и вообще никуда не переходить, а использовать переключение (visible=true/false) разных div-ов с различным контентом на одной странице ... тогда и передавать ничего никуда не надо - все на одной странице ...
...
Рейтинг: 0 / 0
Переход на новую страницу
    #38355581
ZardoZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

можно конечно, но логичнее сделать все на разных страницах. У меня на одной странице список предприятий, а на другой уже данные и графики выбранного предприятия.
Хотел просто опробовать прелести ASP.NET, а они не работают

Ну раз ни у кого нет идей, то буду через js переключать и через сессию сохранять объект, как в php делал.
...
Рейтинг: 0 / 0
Переход на новую страницу
    #38355597
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZardoZcarrotik,

можно конечно, но логичнее сделать все на разных страницах. У меня на одной странице список предприятий, а на другой уже данные и графики выбранного предприятия.
Хотел просто опробовать прелести ASP.NET, а они не работают

Ну раз ни у кого нет идей, то буду через js переключать и через сессию сохранять объект, как в php делал.

...сессии имеют привычку истекать .. это тоже настраивается, разумеется, но можно подумать над сохранением переходных данных во "временной" таблице БД .. По скорости на вебе это не так заметно, зато надежней .. Но это дело вкуса ...
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Переход на новую страницу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]