![]() |
|
Модераторы: gambit |
![]()
|
|
| cosamia |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 11.5.2005 Репутация: нет Всего: нет |
Есть 2 формы: index1.aspx , index2.aspx
index1.aspx должен передать методом пост данные с формы в index2.aspx (index1.aspx в index1.aspx передает без проблем.) есть ли пример как это сделать? |
|||
|
||||
| FatherFrost |
|
||||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Вот к примеру можно так:
index1.aspx
Теперь пишем второй файл с серверным скриптом на VBScript. Файл index2.aspx:
Вот вроде и все... Может конечно здесь будут ошибки и недочеты и пример довольно примитивный..... Ну может потом старожилы раздела еще что тебе подкинут. -------------------- Задаю много глупых вопросов.... |
||||
|
|||||
| cosamia |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 11.5.2005 Репутация: нет Всего: нет |
не, этот пример - прямо чистой воды ASP. А меня интересовало сделать именно на 100%asp.net ресурсах.
я вот подумал, может в index1.aspx объявить св-во public string val{ get{...} set{...} } а уже в index2.aspx как то попытаться к нему обратиться....такой подход не сработает? |
|||
|
||||
| FatherFrost |
|
||||||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Ну тогда если я правильно понял:
index2.aspx
Теперь для страницы пишем класс index2.aspx.cs:
Таким образом при переходе на вторую страницу ты отобразишь в поле самый первый параметр предыдущей страницы (они индексуются с нуля) - userName. Добавлено @ 16:03 Можно еще и так....
Я просто до этого на Java немного под WEB писал, поэтому не сразу нашел как по имени получать... -------------------- Задаю много глупых вопросов.... |
||||||
|
|||||||
| cosamia |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 11.5.2005 Репутация: нет Всего: нет |
что-то не работает....
при Label1.Text=this.Request.Form.Get(0); на range ругается а при Label1.Text=this.Request.Form["TextBox1"]; вообще пусто, ничего не пишет... да и потом, как вы передали управление с index1.aspx на index2.aspx? неужели через action="index2.aspx" ? |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Да конечно... Это нужно смотретьспецификацию тега FORM.... Фактически после сабмита формы вызывается ее экшин. Это может быть и скрипт, а может быть и просто ссылка.
После чего броузером формируется HttpRequest, который получает веб-сервер (в данном случае IIS). После чего на следующей aspx-странице или в классе ее поддержки можешь извлекать из request'a всю нужную информацию. Это и http-заголовки и параметры запроса (т.е. поля формы в данном случае) Если ругается на range, то соответственно ты в запросе не передаешь ни одного параметра методом ПОСТ. Это либо не указан точно метод обработки запроса (для тега FORM параметр method). Если я не ошибаюсь, по умолчанию берется GET, то соответственно нужно использовать не
а работать уже с GET-запросом вместо Form ипсользовать аналогично Param.... А так лучше код свой приведи... -------------------- Задаю много глупых вопросов.... |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
А можно воспользоваться методом Server.Transfer. Тогда flow будет такой:
1) index1.aspx постит форму на себя 2)в page_load делается Server.Transfer на index2.aspx. Все данные формы index1 передаются на index2 |
|||
|
||||
| cosamia |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 11.5.2005 Репутация: нет Всего: нет |
Мысль хорошая. Как в index2.aspx вытащить данные? Request.Form("TextBox1"); не проходит... |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
Юзать hidden-поля. Так, как ты хочешь, не получится, потому что ASP.NET сам генерит имена полей. |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Описаная мною методика широко применяется в Java для передачи данных из формы далее...
Вот это как раз, по моему, велосипед.... Зачем постить на себя и передавать далее???? Это получается сначало мы передаем данные со страницы на себя, а затем только на вторую страницу (если я правильно понял...) Помоему рациональнее передавать их сразу, т.к. эти данные уже будут содержаться в Http-запросе, а на следующей странице остается только этот запрос проанализировать на наличие определенных параметров.... Можно конечно еще через сессию кидать, но это тоже не дело... arilouЕсли я не прав, разъясни плиз в чем преимущество твоего метода..... Мне, как работавшему с веб-программированием на Java, это кажется не очень удобным и слегка запутанным... -------------------- Задаю много глупых вопросов.... |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
FatherFrost
В принципе, все достаточно просто. Как известно, упрощенный цикл жизни у ASP.NET страницы такой: Браузер -> Get запрос -> ASP.NET -> Поиск нужного code-behind класса и создание его инстанса -> Обработка HttpRequest'а найденным классом. -> Посылка HTML браузеру -> Браузер -> Submit формы -> Post запрос и т.д. Значицца, в ASP.NET есть 2 метода передачи управления между страницами: Response.Redirect и Server.Transfer. Первый фактически создает новый GET запрос для сервера, в то время как второй передает текущий HttpRequest другому code-behind классу. Поэтому велосипеда нет, как и повторного постинга данных. Это сообщение отредактировал(а) arilou - 24.1.2006, 14:43 |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
arilou Все равно я не вижу какой либо пользы от такой реализации...
К тому же в МСДН указывается и недостаток этого метода:
Насколько я понимаю данный сценарий передачи инфы специфичен для конкретных задач, а в некоторых случаях он вовсе не нужен и может быть даже нежелателен... -------------------- Задаю много глупых вопросов.... |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
FatherFrost
Оно то так, но все надо применять с умом, как и написано в MSDN Я довольно долго занимаюсь программингом под ASP.NET, поэтому могу тебе сказать, что вариант с использованием form action='index2.aspx' не очень хорош в принципе, также как и мой. Принято постить на ту же страницу и использовать ASP.NET web-controls для пользовательского ввода. Более того, ASP.NET 1.x не поддерживает несколько форм на одной странице. Так что такие вот дела. cosamia А зачем вообще постить на другую страницу? Наверняка это необязательно и какой-нить анахронизм со времен classic ASP |
|||
|
||||
| FatherFrost |
|
|||
|
Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Вот это уже наверно более интересное и перспективное решение.... Потому что во многих случаях удобнее работать с одной страницей, чем с последовательностью страниц и переходов... -------------------- Задаю много глупых вопросов.... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |