![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Отправка данных формы другой странице 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, < /form>
Из чего можно заключить, что данные формы не направляются из браузера непосредственно странице CrossPage.aspx, а предварительно направляются все той же странице GetValues.aspx, которая содержит форму frmTest. Это необходимо для поддержки серверной проверки (validation) введенных данных с использованием элементов управления RequiredFieldValidation, RangeValidation и других.
|