Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Отправка данных формы другой странице ASP.NET






Существенное ограничение серверных форм в ASP.NET 1.0 – отсутствие возможности непосредственно передавать данные, введенные в форме, другой странице. Чтобы отправить значения элементов на форму другой страницы необходимо использовать простую HTML форму и в атрибуте action указать путь к странице, которая должна получить данные. При этом теряются преимущества использования серверных форм.

В ASP.NET 2.0 тег элемента управления может иметь дополнительный атрибут PostBackUrl, позволяющий указать какой странице система должна передать Web-форму, если отправление данных на сервер инициировано этим элементом управления.

 

< form id=" frmTest" runat=" server" >

< asp: textbox id=" txtFirstName" runat=" server" />

< br /> < asp: textbox id=" txtLastName" runat=" server" />

< br /> < asp: button id=" btnSend" Text=" Post Data" PostBackUrl=" crosspost.aspx" runat=" server" />

< /form>

 

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

Чтобы реализовать эту возможность, среда ASP.NET 2.0 осуществляет проверку ASPX страниц на предмет наличия элементов управления с заданным атрибутом PostBackUrl и, при наличии таковых, создает на странице дополнительное скрытое поле __PREVIOUSPAGE, которое и содержит информацию о состоянии элементов формы. Эта информация доступна странице-получателю через свойство PreviousPage.

 

void Page_Load(object sender, EventArgs e)

{ if (PreviousPage! = null)

{ // Получаем объекты отправленной формы

TextBox txtFirstName =

(TextBox)PreviousPage.FindControl(" txtFirstName");

TextBox txtLastName =

(TextBox)PreviousPage.FindControl(" txtLastName");

// Используем данные

txtInfo.Text = " Добрый день, " + txtFirstName.Text + "! ";

}

}

 

На уровне HTML кода, отправка данных другой форме выглядит следующим образом.

 

< form method=" post" action=" GetValues.aspx" id=" frmTest" >

< input type=" submit" name=" btnSend" value=" Post Data" onclick=" javascript: WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(& quot; btnSend& quot;, & quot; & quot;, false,
& quot; & quot;, & quot; CrossPage.aspx& quot;, false, false))" id=" btnSend" />

< /form>

 

Из чего можно заключить, что данные формы не направляются из браузера непосредственно странице CrossPage.aspx, а предварительно направляются все той же странице GetValues.aspx, которая содержит форму frmTest. Это необходимо для поддержки серверной проверки (validation) введенных данных с использованием элементов управления RequiredFieldValidation, RangeValidation и других.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.