• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Ajax Repeater Control (перевод)

  • Автор темы admin
  • Дата начала
A

admin

<h1><strong>AJAX Repeater control (перевод)</strong></h1> <P>Repeater control создаёт ItemTemplate, HeaderTemplate,FooterTemplate, AlternatingItemTemplate и SeperatorTemplate используяjavascript для вывода данных из XMLHTTP запроса.</P> <P>XMLHttp и AJAX помогут вам использовать в вашем приложении трюкикоторые недоступны в обычном HTML, но ваш код может быстро статьнепонятным, трудным если вы заранее не спланируете ваш подход должнымобразом. Я ещё помню тот день, когда писал труднопонятный код,классически строя таблицы в asp. Всё меняется с использованиемконтролов наподобие repeater control, и, код даталиста, в asp.netтеперь можно сделать чистым и понятным для разработчика.</P> <P>AJAX происходит ещё со времён классического asp 1999-2000 годов,многие ребята работали над собственными версиями паттернов и frameworksразработанными с использованием технологии AJAX. Есть JavasScriptбиблиотека, которая содержит много прототипов AJAX(<A href="http://prototype.conio.net" target="_blank"> </A>), но они всё ещё не так полезны, удобны,чтобы помочь нам отобразить табличные данные с удобством которое мыполучем когда используем контрол наподобие repeater control.</P> <P><STRONG>Что котрол делает?</STRONG></P> <P>Я сделал возможным объявление его программно в javascript коде иустановку его свойств таких как ItemTemplate, HeaderTemplate,FooterTemplate, AlternatingItemTemplate и SeperatorTemplate.</P> <P>У контрола есть свойство DataSource, с которым я могу связать XML полученный из XMLHTTP запроса.</P> <P>Контрол способен использовать данные из аттрибутов и из InnerXMLисточника данных XML и он также может вызывать внешний javascriptметод, если это необходимо для манипулирования данными перед отрисовкой.</P> <P>Когда я вызываю DataBind метод контрола - он будет рендерить себя в специальный HtmlElement определённый как HostControlID.</P> <P><STRONG>Что необходимо?</STRONG></P> <P>Для краткости, я предложу что у нас есть handler employees.ashx который возвращает xml, следующей XML структуры.</P> <P><EmployeesData>
  <Employees>
    <Employee ID=”PMA42628M”>
      <HireDate>8/27/1992 12:00:00 AM</HireDate>
      <Name>Paolo</Name>
      <LastName>Accorti</LastName>
    </Employee>
  </Employees>
  …
</EmployeesData></P> <P>Мы будем использовать prototype.js скрипт, который получает данныеиз handler и отправляет их в RepeaterControl. Если у вас нет этойбиблиотеки, то я настоятелно рекомедую вам обзавестись ей.</P> <P><STRONG>Внутри javascript RepeaterControl</STRONG></P> <P>Ниже приведены три DataBinding выражения, которые используются в контроле.</P> <OL> <LI>{@AttributeName} для связываения аттрибутов. Например {@ID} - результат “PMA42628M” <LI>{$NodeName} для связывания значений нод, например {$Name} - результат “Paolo” <LI>{Eval(formatDate({$HireDate}))} вызывает javascript функцию formatDate(’8/27/1992 12:00:00 AM’) - результат в “8-27-1992″</LI> </OL> <P>Код делает следющие вещи.</P> <OL> <LI>Добавляет HeaderTemplate в результат. <LI>Просматривает XML результирующие ноды, доступные в источнике данных. <LI>Проверяет текущее количество строк и выбирает или ItemTemplate или AlternatingItemTemplate, <LI>Используя регулярные выражения заменяет {@} выражения и {$} выражения на соотвествующие данные из XML. <LI>Используя регулярные выражения применяет {Eval} выражения к данным. <LI>Применяет SeparatorTemplate к строкам кроме последней. <LI>Добавляет FooterTemplate в результат. <LI>Рендерит результат в специальный HtmlElement.</LI> </OL> <P><STRONG>Внутри страницы</STRONG></P> <P>Html разметка содержит два главных элемента.</P> <OL> <LI>Div в который рендериться таблица. <LI>Кнопка, при нажатии которой срабатывает событие, которое вызывет XMLHttp и связывает данные с нашим RepeaterControl.</LI> </OL> <P>javascript содержит следующее</P> <OL> <LI>Объявление RepeaterControl, которые уставнавливает свои шаблоны и свойства. <LI>LoadData функцию, которая вызывается для кнопки, LoadData функцияиспользует prototype.js и делает XMLHttp запрос и передаёт управлениенад результатом другой javascript функции называемой dataReceived. <LI>dataReceived функция связывает данные полученные из XMLHttp запрос в RepeaterControl. <LI>И javascript функцию formateDate, которая сделанна также, и помогает форматировать данные в более презентабильный вид.</LI> </OL> <P>Этот рисунок показывает конечный результат.

Figure1.jpg
</P> <P>Рисунок 1: Пример AJAX RepeaterControl</P> <P><STRONG>Исходники и как запустить пример на вашей машине. </STRONG></P> <P>Исходники содержит следующие файлы.</P> <OL> <LI>Пример страницы на которой используется RepeaterControl - default.htm <LI>Сам RepeaterControl - RepeaterControl.js <LI>Handler, который возвращает XML - Emplayees.ashx <LI>Библиотека прототипов - prototype.js <LI>Стили default.css</LI> </OL> <P>Переместите исходные файлы в любую директорию и установитеconnection string в employees.ashx для вашей доступной базы данных SQLсервера. Если у вас нет возможности работать с базой данных, тогдапросто замените employees.ashx на xml файл и внесите необходимыеизменения в default.htm.</P> <P><STRONG>Вывод.</STRONG></P> <P>Я всё ещё эксперементирую с подходами использования контроловнаподобие этого, которые рендерят различные виды данных из javascript,я всё ещё не уверен, что этот подход к программированию будет работатьдолго. Расскажите мне о вашем подходе.</P><P>Исходники: <A href="http://www.bxq.ru/wp-content/uploads/2006/02/RepeaterControlSample.zip" target="_blank">RepeaterControl</A> 
Автор: Jigar Desai. 30 января, 2006 года.
Источник: <A href="http://www.c-sharpcorner.com/UploadFile/desaijm/AJAXRepeaterControl01302006213655PM/AJAXRepeaterControl.aspx" target="_blank"> <WBR>File/desaijm/AJAXRepeaterControl01302006<WBR>213655PM/AJAXRepeaterControl.aspx</A></P>
 
S

Saper

Наш подход - это использование Microsoft Atlas
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!