Введение в AJAX и Atlas c использованием ASP.NET 2.0 - Элементарный  пример Atlas

ОГЛАВЛЕНИЕ

 

Элементарный  пример Atlas

Вместо того чтобы просто говорить об Atlas, мы сначала продемонстрируем основные идеи, используя простой пример. Вам сначала придется перейти на сайт Atlas (atlas.asp.net) , загрузить и установить файл April CTP setup (.msi) . Во время установки все настройки оставьте как они настроены по умолчанию. Этот конфигурационный файл установит шаблон веб-сайта Atlas в вашу установку Visual Studio 2005 либо Visual Web Developer .

Теперь, когда у вас уже установлен шаблон Atlas, мы можем перейти к нашему первому примеру. Запустите Visual Studio 2005. Когда он загрузится, нажмите на New Web Site в меню File. Вы увидите диалоговое окно похожее на то, что указано ниже.


Выберите пункт Atlas Web Site, располагающийся под My Templates, введите место расположения, и нажмите OK. Шаблон Atlas Web Site уже произвел некоторую предварительную установку за вас. Например, в проводнике solution, если вы посмотрите на директорию, ниже /bin, вы увидите, что Microsoft.Web.Atlas.dll уже был включен в ваш проект. Более того, если вы посмотрите на исходный код вашего Web.config файла, вы увидите все методы, которые необходимы для того, чтобы добавить функциональность Atlas в ваше веб-приложение. (Я не буду вдаваться во все подробности, принадлежащие коду, который Atlas внедряет в Web.config. Если вы желаете узнать больше о том, что же значит эта разметка, изучите документацию по Atlas (atlas.asp.net/docs)).

Наконец, если вы исследуете исходный код страницы Default.aspx вы сможете заметить что Atlas добавил новое объявление серверного элемента управления:

 <atlas:ScriptManager  ID="ScriptManager1" runat="server" />  

В каждой странице, где вы хотите внедрить функциональность Atlas, вы должны иметь в точности одно объявление элемента управления ScriptManager. Мы пока проигнорируем блок <script> в конце страницы и перейдем непосредственно к нашему примеру.

Для того, чтобы начать, вставьте следующий код в вашу Default.aspx страницу, тем самым заменяя код между тегами <form> :

 <form id="form1"  runat="server">
    <atlas:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"/>
    
    <div style="background-color: Yellow; float: left; width: 100px;">
      <asp:Label ID="FullPostBackLabel" runat="server" /><br />
      <asp:Button ID="FullPostBackButton" runat="server" text="Full Post Back" OnClick="FullPostBackButton_OnClick" />
    </div>
    
    <atlas:UpdatePanel runat="server" ID="UpdatePanel1" Mode="Conditional">
      <ContentTemplate>
        <div style="background-color: Lime; width: 100px;">
          <asp:Label ID="PartialPostBackLabel" runat="server" /><br />
          <asp:Button ID="PartialPostBackButton" runat="server" text="Partial Post Back" OnClick="PartialPostBackButton_OnClick" />
        </div>
      </ContentTemplate>
    </atlas:UpdatePanel>
</form>

Вкратце, эта декларативная разметка создает два пользовательских интерфейса, которые обновляют элемент управления Label согласно текущим времени и дате на сервере. Первый интерфейс использует стандарт, запрос\ответ постбэк ("Full Post Back" элементы управления), в то время как второй будет использовать AJAX для того, чтобы создавать частичные постбэки. Я опущу обсуждение элементов управления "Full Post Back", так как они не должны требовать объяснений; вместо этого, мы сфокусируемся на "Partial Post Back" элементах управления.

Как вы могли уже заметить, атрибут EnablePatialRendering из элемента управления ScriptManager был добавлен и его значение установлено в "Истина". Это позволит ASP.NET посылать только части страницы назад на сервер , вместо того чтобы обновлять страницу каждый раз. Мы как раз этого и хотим! Для того чтобы обработать асинхронный постинг информации назад на веб-сервер, вам необходимо добавить элемент управления UpdatePanel на вашу страницу:

 <atlas:UpdatePanel runat="server"  ID="UpdatePanel1"  Mode="Conditional">
    <ContentTemplate>
    </ContentTemplate>
</atlas:UpdatePanel>

Поместите те элементы управления ASP.NET, которые участвуют в асинхронном постбэке , между тегами <ContentTemplate> UpdatePanel . Атрибут Mode UpdatePanel указывает, когда частичный постбэк успешно произошел. Для этой страницы установите атрибут Mode в значение Conditional, что означает, что UpdatePanel будет посылать свою информацию назад на сервер в случае, если одно из этих трех событий произойдет:

  1. если метод Update() UpdatePanel был вызван напрямую
  2. событие UpdatePanel является причиной неявного вызова метода Update()
  3. серверный элемент управления, который находится в пределах UpdatePanel, вызывает постбэк
Если опустить атрибут Mode, он будет всегда установлен в значени и по умолчанию Always, что будет причиной обновления UpdatePanel , когда какой-либо элемент управления на странице вызывает постбэк. В данном примере мы будем использовать третий вариант для постбэка UpdatePanel (то есть , UpdatePanel будет постить назад, когда элемент управления в нем вызовет постбэк). Как вы могли уже заметить, у нас есть элементы управления Label и Button между тегами <ContentTemplate>. Тем самым, UpdatePanel будет выполнять постбэк , когда будет нажат элемент управления Button.

Наконец, добавьте следующий <script> блок для серверной стороны между тегами <head> страницы (вы также можете добавить это к страничному классу code-behind, если вам угодно):

 <script runat="server">
  void FullPostBackButton_OnClick(object sender, EventArgs e)
  {
    FullPostBackLabel.Text = DateTime.Now.ToString();
  }

  void PartialPostBackButton_OnClick(object sender, EventArgs e)
  {
    PartialPostBackLabel.Text = DateTime.Now.ToString();
  }
</script>

Это обработчики события на серверной стороне для двух элементов управления Button (один располагается в пределах UpdatePanel, а другой - за пределами), которые будут обновлять Labels , находящиеся над ними, записывая в них информацию о текущих времени и дате, присланных с сервера.

Запустите проект сейчас и нажмите на каждую кнопку. После того, как вы выполните это, ваш экран должен выглядеть почти так же, как и следующее изображение:


Нажав на кнопку "Partial Post Back", вы увидите, как время и дата над ней обновляются без какого-либо мигания на странице, без полностраничного постбэка, и без изменений времени и даты в другой секции! Нажатие кнопки "Partial Post Back" запускает асинхронный постбэк на веб-сервер, используя объект XMLHttpRequest; веб-сервер затем посылает информацию назад, что было использовано для динамического обновления страницы. Этот простой пример демонстрирует простоту реализации AJAX поведений в вашем приложении используя Atlas.

На этой стадии ваше воображение наверняка бушует, думая о различных возможностях использования ASP.NET 2.0 Web элементов управления в сценариях AJAX. В нашем следующем примере мы будем использовать элемент управления GridView. Мы покажем насколько просто добавление частичных постбэков в целях обновления, сортировки и листания по записям!