КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Межстраничный постинг
Перенаправление пользователя При разработке приложений ASP.NET типичной является задача перенаправления пользователя на другую страницу. Например, в обработчике события Click кнопки нужно проверить введенные пользователем данные регистрации и направить его на страницу «Успешная регистрация». Как правило, для этих целей используют метод Redirect() объекта Response: protected void btnRegister_Click(object sender, EventArgs e) { if (IsUserDataCorrect()) { Response.Redirect("~/success.aspx"); } } Метод Response.Redirect() может перенаправить пользователя на любой URL, не обязательно на страницу текущего веб-приложения. Кстати, обратите внимание, что в коде обработчиков событий и в атрибутах серверных элементов управления ASP.NET для указания корня веб-приложения можно использовать символ "~". Альтернативой методу Response.Redirect() может служить метод Server.Transfer(). При использовании этого метода переход осуществляется на сервере: URL новой страницы не отражается в строке адреса браузера, а если за вызовом метода Transfer() следует еще какой-либо код, он никогда не выполняется. Ограничение метода Transfer() – переход возможен только на страницы внутри одного веб-приложения. В ASP.NET 2.0 появился механизм, позволяющий изменить стандартный цикл обработки страницы ‑ возврат данных самой себе. В ASP.NET 2.0 те элементы управления страницы, которые реализуют интерфейс IButtonControl, можно сконфигурировать таким образом, чтобы они осуществляли возврат формы другой странице. Это называется межстраничным постингом. Для межстраничного постинга у кнопочных элементов управления изменяется свойство PostBackUrl. В нем задается URL целевой страницы. <asp:button ID="btnPostBacks" runat="server" Text="Click" PostBackUrl="target.aspx" /> Для ссылки на страницу, выполнившую отправку, и доступа ко всем ее элементам управления используется свойство PreviousPage. Вот код целевой страницы, извлекающий содержимое текстового поля формы: protected void Page_Load(object sender, EventArgs e) { // находим элемент на предыдущей странице var tbxControl = (TextBox)PreviousPage.FindControl("tbxName"); } Используя свойство PreviousPage класса Page, можно обращаться к любым элементам управления страницы, выполнившей постинг. Доступ к элементам управления осуществляется слабо типизированным и косвенным способом, через метод FindControl(). Дело в том, что целевой странице не известен тип исходной. PreviousPage объявлено как свойство типа Page, а потому оно не может предоставить доступ к странице производного класса. Если страница была вызвана сама по себе, а не является объектом межстраничного перехода, свойство PreviousPage возвращает null. Свойство IsCrossPagePostBack класса Page возвращает true, если текущая страница вызвала другую страницу ASP.NET. Разумеется, для целевой страницы оно всегда возвращает false.
Дата добавления: 2014-01-11; Просмотров: 593; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |