Эталонные страницы и ASP.NET AJAX (VB)

по Скотт Митчелл

Скачать код или скачать PDF

Обсуждаются варианты использования ASP.NET AJAX и главных страниц. Просматривает использование класса ScriptManagerProxy; Описывает, как различные файлы JS загружаются в зависимости от того, используется ли ScriptManager на главной странице или странице содержимого.

Введение

За последние несколько лет все больше разработчиков создали веб-приложения с поддержкой AJAX. Веб-сайт с поддержкой AJAX использует ряд связанных веб-технологий для более быстрого реагирования на работу пользователей. Создание приложений ASP.NET с поддержкой AJAX невероятно легко благодаря технологии Microsoft ASP.NET AJAX Framework. ASP.NET AJAX встроен в ASP.NET 3,5 и Visual Studio 2008; Она также доступна как отдельная загрузка для приложений ASP.NET 2,0.

При создании веб-страниц с поддержкой AJAX с помощью платформы AJAX ASP.NET необходимо добавить на каждую страницу, использующую платформу, ровно один элемент управления ScriptManager. Как следует из названия, ScriptManager управляет сценарием на стороне клиента, используемым на веб-страницах с поддержкой AJAX. Как минимум, ScriptManager создает HTML-код, который указывает браузеру загрузить файлы JavaScript, описывающего клиентскую библиотеку AJAX ASP.NET. Его также можно использовать для регистрации пользовательских файлов JavaScript, веб-служб с поддержкой скриптов и пользовательских функций службы приложений.

Если сайт использует главные страницы (как это необходимо), добавлять элемент управления ScriptManager на каждую страницу содержимого не обязательно; Вместо этого можно добавить элемент управления ScriptManager на главную страницу. В этом руководстве показано, как добавить элемент управления ScriptManager на главную страницу. Кроме того, здесь рассматривается использование элемента управления ScriptManagerProxy для регистрации пользовательских скриптов и служб скриптов на определенной странице содержимого.

Note

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

Проверка разметки, порожденной элементом управления ScriptManager

Элемент управления ScriptManager создает разметку, которая указывает браузеру загрузить файлы JavaScript, описывающего клиентскую библиотеку AJAX ASP.NET. Также добавляется ряд встроенных сценариев JavaScript на страницу, которая инициализирует эту библиотеку. В следующей разметке показано содержимое, добавляемое в отображаемые выходные данные страницы, которая содержит элемент управления ScriptManager:

<script src="/ASPNET_MasterPages_Tutorial_08_CS/WebResource.axd?d=T8EVk6SsA8mgPKu7_sBX5w2 t=633363040378379010" type="text/javascript"></script>

<script src="/ASPNET_MasterPages_Tutorial_08_CS/ScriptResource.axd?d=SCE1TCh8B24VkQIU5a8iJFizuPBIqs6Lka7GEkxo-6ROKNw5LVPCpF_pmLFR-R-p_Uf42Ahmr_SKd8lwgZUWb2uPJmfX0X_H6oLA50bniyQ1 t=633465688673751480" type="text/javascript"></script>

<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>

<script src="/ASPNET_MasterPages_Tutorial_08_CS/ScriptResource.axd?d=SCE1TCh8B24VkQIU5a8iJFizuPBIqs6Lka7GEkxo-6ROKNw5LVPCpF_pmLFR-R-phT96yZPngppiP_VXlN4Vz2RuVtvwDiQzF9xt42dUCiYjL0UylAJoyYzStwvObx0U0 t=633465688673751480" type="text/javascript"></script>

<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager1', document.getElementById('form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls([], [], [], 90);
//]]>
</script>

<script type="text/javascript">
//<![CDATA[
Sys.Application.initialize();
//]]>
</script>

Теги <script src="url"></script> указывают браузеру загрузить и выполнить файл JavaScript по URL-адресу. ScriptManager выдает три таких тега; один ссылается на файл WebResource.axd, а другие два ссылаются на ScriptResource.axdфайла. Эти файлы фактически не существуют как файлы на веб-сайте. Вместо этого, когда запрос одного из этих файлов поступает на веб-сервер, модуль ASP.NET проверяет строку запроса и возвращает соответствующее содержимое JavaScript. Скрипт, предоставляемый этими тремя файлами JavaScript, состоит из клиентской библиотеки платформы ASP.NET AJAX. Другие Теги <script>, созданные ScriptManager, включают встроенный скрипт, который инициализирует эту библиотеку.

Ссылки на внешние скрипты и встроенный скрипт, создаваемые ScriptManager, необходимы для страницы, которая использует платформу ASP.NET AJAX, но не требуется для страниц, не использующих платформу. Таким образом, может быть, что лучше всего добавить ScriptManager только на те страницы, которые используют платформу ASP.NET AJAX. И это достаточно, но если у вас много страниц, использующих эту платформу, вы добавите элемент управления ScriptManager ко всем страницам — повторяющейся задаче, чтобы сказать, что она наименее. Кроме того, можно добавить ScriptManager на главную страницу, который затем внедряет этот необходимый скрипт на все страницы содержимого. При таком подходе не нужно забывать добавить ScriptManager на новую страницу, использующую платформу ASP.NET AJAX, так как она уже включена на главной странице. Шаг 1 содержит инструкции по добавлению ScriptManager на главную страницу.

Note

Если вы планируете включить функциональные возможности AJAX в пользовательском интерфейсе главной страницы, вы не сможете выбрать нужный элемент. необходимо включить ScriptManager в главную страницу.

Одной из недостатков добавления ScriptManager на главную страницу является то, что приведенный выше сценарий создается на каждой странице, независимо от того, требуется ли он. Это явно приводит к потреблению лишней пропускной способности для страниц, которые включают ScriptManager (с помощью главной страницы), но не используют функции платформы ASP.NET AJAX. Но сколько пропускной способности теряется?

  • Реальное содержимое, порожденное ScriptManager (показанное выше), суммирует 1 КБ.
  • Однако три внешних файла скриптов, на которые ссылается элемент <script>, состоят из примерно 450KB данных без сжатия. на веб-сайте, использующем сжатие GZIP, эту общую пропускную способность можно уменьшить около 100 КБ. Однако эти файлы сценариев кэшируются браузером в течение одного года, то есть их необходимо загрузить только один раз, а затем повторно использовать на других страницах сайта.

В лучшем случае, когда файлы скрипта кэшируются, Общая стоимость — 1 КБ, что незначительно. Однако в худшем случае, если файлы скриптов еще не скачаны и веб-сервер не использует сжатые формы, пропускная способность будет около 450KB, что может поочередно добавляться в любом месте через широкополосное подключение до минуты. Пользователи через коммутируемые модемы. Хорошая новость состоит в том, что поскольку внешние файлы скриптов кэшируются браузером, это наихудший случай случается редко.

Note

Если вы по-прежнему не можете разместить элемент управления ScriptManager на главной странице, рассмотрим веб-форму (<form runat="server"> разметку на главной странице). Каждая страница ASP.NET, использующая модель обратной передачи, должна содержать ровно одну веб-форму. При добавлении веб-формы добавляется дополнительное содержимое: ряд скрытых полей формы, сам тег <form> и, при необходимости, функция JavaScript для инициации обратной передачи из скрипта. Эта разметка не требуется для страниц, которые не являются обратными. Эту излишнее разметку можно устранить, удалив веб-форму с главной страницы и вручную добавив ее на каждую страницу содержимого, которая нуждается в такой разметке. Однако преимущества веб-формы на главной странице перевешивают недостатки, так как они не добавляются к определенным страницам содержимого.

Шаг 1. Добавление элемента управления ScriptManager на главную страницу

Каждая веб-страница, использующая платформу ASP.NET AJAX, должна содержать ровно один элемент управления ScriptManager. В связи с этим требованием обычно имеет смысл поместить один элемент управления ScriptManager на главную страницу, чтобы все страницы содержимого автоматически включали элемент управления ScriptManager. Кроме того, ScriptManager должен находиться перед любыми серверными элементами управления ASP.NET AJAX, такими как UpdatePanel и UpdateProgress Controls. Поэтому рекомендуется разместить ScriptManager перед любыми элементами управления ContentPlaceHolder в веб-форме.

Откройте Site.master главную страницу и добавьте элемент управления ScriptManager на страницу в веб-форме, но перед элементом <div id="topContent"> (см. рис. 1). Если вы используете Visual Web Developer 2008 или Visual Studio 2008, элемент управления ScriptManager находится в области элементов на вкладке расширения AJAX. При использовании Visual Studio 2005 необходимо сначала установить платформу ASP.NET AJAX и добавить элементы управления на панель элементов. Посетите страницу загрузки ASP.NET AJAX, чтобы получить платформу для ASP.NET 2,0.

После добавления ScriptManager на страницу измените его ID с ScriptManager1 на MyManager.

добавить ScriptManager на главную страницу

Рис. 01. Добавление ScriptManager на главную страницу (щелкните, чтобы просмотреть изображение с полным размером)

Шаг 2. Использование платформы ASP.NET AJAX на странице содержимого

После добавления элемента управления ScriptManager на главную страницу можно добавить функциональность платформы ASP.NET AJAX на любую страницу содержимого. Давайте создадим новую страницу ASP.NET, которая отображает продукт, выбранный случайным образом, из базы данных Northwind. Мы будем использовать элемент управления таймера платформы ASP.NET AJAX для обновления этого экрана каждые 15 секунд, показывая новый продукт.

Начните с создания новой страницы в корневом каталоге с именем ShowRandomProduct.aspx. Не забудьте привязать эту новую страницу к главной странице Site.master.

добавить новую страницу ASP.NET на веб-сайт

Рис. 02. Добавление новой страницы ASP.NET на веб-сайт (щелкните, чтобы просмотреть изображение с полным размером)

Помните, что в разделе Указание заголовка, Meta-тегов и других заголовков HTML на главной странице [SKM1] мы создали пользовательский класс базовой страницы с именем BasePage, который создал заголовок страницы, если он не был явно задан. Перейдите к классу кода программной части ShowRandomProduct.aspx страницы и получите производный от BasePage (а не System.Web.UI.Page).

Наконец, обновите файл Web.sitemap, включив в него запись для этого занятия. Добавьте следующую разметку под <siteMapNode> для занятия "взаимодействие с главной страницей содержимого":

<siteMapNode url="~/ShowRandomProduct.aspx" title="Master Pages and ASP.NET AJAX" />

Добавление этого элемента <siteMapNode> отражается в списке уроков (см. рис. 5).

Отображение продукта, выбранного случайным образом

Вернитесь к ShowRandomProduct.aspx. Из конструктора перетащите элемент управления UpdatePanel из панели элементов в MainContent элемент управления содержимым и задайте для его свойства ID значение ProductPanel. UpdatePanel представляет область на экране, которую можно асинхронно обновить с помощью частичной обратной передачи страницы.

Первая задача — отображение сведений о продукте, выбранном случайным образом, в UpdatePanel. Начните с перетаскивания элемента управления DetailsView в UpdatePanel. Задайте для свойства ID элемента управления DetailsView значение ProductInfo и удалите его свойства Height и Width. Разверните смарт-тег DetailsView и в раскрывающемся списке Выбор источника данных выберите, чтобы привязать DetailsView к новому элементу управления SqlDataSource с именем RandomProductDataSource.

привязать DetailsView к новому элементу управления SqlDataSource

Рис. 03. привязка элемента DetailsView к новому элементу управления SqlDataSource (щелкните, чтобы просмотреть изображение с полным размером)

Настройте элемент управления SqlDataSource для подключения к базе данных Northwind с помощью NorthwindConnectionString (которая была создана при взаимодействии с главной страницей в руководстве по содержимому [SKM2]). При настройке инструкции Select выберите, чтобы указать пользовательскую инструкцию SQL, а затем введите следующий запрос:

SELECT TOP 1 ProductName, UnitPrice
FROM Products
ORDER BY NEWID()

Ключевое слово TOP 1 в предложении SELECT возвращает только первую запись, возвращенную запросом. Функция NEWID() создает новое глобальное уникальное значение идентификатора (GUID) и может использоваться в предложении ORDER BY для возврата записей таблицы в случайном порядке.

настроить SqlDataSource для возврата одной, случайным образом выбранной записи

Рис. 04. Настройка SqlDataSource для возврата одной и случайной выбранной записи (щелкните, чтобы просмотреть изображение с полным размером)

После завершения работы мастера Visual Studio создает BoundField для двух столбцов, возвращаемых приведенным выше запросом. На этом этапе декларативная разметка страницы должна выглядеть следующим образом:

<asp:UpdatePanel ID="ProductPanel" runat="server">
 <ContentTemplate>
 <asp:DetailsView ID="ProductInfo" runat="server" AutoGenerateRows="False" 
 DataSourceID="RandomProductDataSource">
 <Fields>
 <asp:BoundField DataField="ProductName" HeaderText="ProductName" 
 SortExpression="ProductName" />
 <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" 
 SortExpression="UnitPrice" />
 </Fields>
 </asp:DetailsView>
 <asp:SqlDataSource ID="RandomProductDataSource" runat="server" 
 ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT TOP 1 ProductName, UnitPrice FROM Products ORDER BY NEWID()"></asp:SqlDataSource>
 </ContentTemplate>
</asp:UpdatePanel>

На рис. 5 показана страница ShowRandomProduct.aspx при просмотре в браузере. Нажмите кнопку Обновить в браузере, чтобы перезагрузить страницу. Вы должны увидеть значения ProductName и UnitPrice для новой записи, выбранной случайным образом.

отображается имя и цена случайного продукта

Рис. 05. отображается имя и цена произвольного продукта (щелкните, чтобы просмотреть изображение с полным размером)

Автоматическое отображение нового продукта каждые 15 секунд

Платформа ASP.NET AJAX содержит элемент управления Timer, выполняющий обратную передачу в указанное время. при обратной передаче возникает событие Tick таймера. Если элемент управления Timer помещается в UpdatePanel, он запускает частичную обратную передачу страницы, в которой мы можем повторно привязать данные к элементу DetailsView для вывода нового продукта, выбранного случайным образом.

Для этого перетащите таймер из панели элементов в элемент UpdatePanel. Измените ID таймера с Timer1 на ProductTimer и его свойство Interval с 60000 на 15000. Свойство Interval указывает количество миллисекунд между обратными передачами; Установка значения 15000 приводит к тому, что таймер будет запускать частичную обратную передачу страницы каждые 15 секунд. На этом этапе декларативная разметка таймера должна выглядеть следующим образом:

<asp:UpdatePanel ID="ProductPanel" runat="server" onload="ProductPanel_Load">
 <ContentTemplate>
 ...

 <asp:Timer ID="ProductTimer" runat="server" Interval="15000">
 </asp:Timer>
 </ContentTemplate>
</asp:UpdatePanel>

Создайте обработчик событий для события Tick таймера. В этом обработчике событий необходимо повторно привязать данные к элементу DetailsView, вызвав метод DataBind DetailsView. Это указывает элементу DetailsView на необходимость повторного извлечения данных из элемента управления источником данных, который выбирает и отображает новую запись, выбранную случайным образом (как при повторной загрузке страницы путем нажатия кнопки "Обновить" в браузере).

Protected Sub ProductTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ProductTimer.Tick
 ProductInfo.DataBind()
End Sub

Это все. Снова перейдите на страницу в браузере. Изначально отображаются сведения о произвольном продукте. Если вы проследите за экраном, вы заметите, что спустя 15 секунд сведения о новом продукте волшебно заменяют существующий экран.

Чтобы лучше понять, что происходит здесь, добавим элемент управления Label к UpdatePanel, отображающий время последнего обновления экрана. Добавьте в UpdatePanel веб-элемент управления Label, задайте для его ID значение LastUpdateTimeи очистите его свойство Text. Затем создайте обработчик событий для события Load UpdatePanel и отобразите текущее время в метке. (Событие Load UpdatePanel срабатывает при каждой частичной или полной обратной передаче страницы.)

Protected Sub ProductPanel_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles ProductPanel.Load
 LastUpdateTime.Text = "Last updated at " & DateTime.Now.ToLongTimeString()
End Sub

После завершения этого изменения страница включает время загрузки текущего отображаемого продукта. На рис. 6 показана страница при первом посещении. На рис. 7 показана страница 15 секунд после того, как элемент управления таймера имеет значение "tickd", а UpdatePanel обновлена для отображения сведений о новом продукте.

при загрузке страницы отображается случайным образом выбранный продукт

Рис. 06. при загрузке страницы отображается случайно выбранный продукт (щелкните, чтобы просмотреть изображение с полным размером)

раз в 15 секунд отображается новый случайный выбранный продукт

Рис. 07. каждые 15 секунд отображается новый продукт, выбранный случайным образом (щелкните, чтобы просмотреть изображение с полным размером)

Шаг 3. Использование элемента управления ScriptManagerProxy

Помимо включения необходимого скрипта для клиентской библиотеки платформы ASP.NET AJAX, ScriptManager также может регистрировать пользовательские файлы JavaScript, ссылки на веб-службы с поддержкой сценариев, а также пользовательские службы проверки подлинности, авторизации и профилей. Обычно такие настройки относятся к определенной странице. Однако если в ScriptManager на главной странице имеются ссылки на пользовательские файлы скриптов, ссылки на веб-службы или службы профилей, то они будут включены во все страницы веб-сайта.

Чтобы добавить настройки, связанные с ScriptManager, на отдельной странице, используйте элемент управления ScriptManagerProxy. Вы можете добавить ScriptManagerProxy на страницу содержимого, а затем зарегистрировать пользовательский файл JavaScript, ссылку на веб-службу, проверку подлинности, авторизацию или службу профиля из ScriptManagerProxy. Это влияет на регистрацию этих служб для конкретной страницы содержимого.

Note

На странице ASP.NET может находиться только один элемент управления ScriptManager. Поэтому нельзя добавить элемент управления ScriptManager на страницу содержимого, если элемент управления ScriptManager уже определен на главной странице. Единственной целью ScriptManagerProxy является предоставление разработчикам возможности определять ScriptManager на главной странице, но по-прежнему иметь возможность добавлять настройки ScriptManager на отдельной странице.

Чтобы увидеть элемент управления ScriptManagerProxy в действии, добавим UpdatePanel в ShowRandomProduct.aspx, чтобы включить кнопку, использующую клиентский сценарий для приостановки или возобновления управления таймером. Элемент управления Timer имеет три метода на стороне клиента, которые можно использовать для достижения требуемой функциональности:

  • _startTimer() — запуск элемента управления Timer
  • _raiseTick() — приводит к тому, что элемент управления "таймер" вызывает "Tick", таким образом отправляя и вызывая событие Tick на сервере.
  • _stopTimer() — останавливает элемент управления Timer.

Давайте создадим файл JavaScript с переменной с именем timerEnabled и функцией с именем ToggleTimer. Переменная timerEnabled указывает, включен ли элемент управления Timer в данный момент или отключен. значение по умолчанию — true. Функция ToggleTimer принимает два входных параметра: ссылку на кнопку Пауза/возобновление и id значение элемента управления Timer на стороне клиента. Эта функция переключает значение timerEnabled, получает ссылку на элемент управления Timer, запускает или останавливает таймер (в зависимости от значения timerEnabled) и обновляет отображаемый текст кнопки на "Пауза" или "возобновление". Эта функция будет вызываться при каждом нажатии кнопки приостановки или возобновления.

Начните с создания новой папки на веб-сайте с именем Scripts. Затем добавьте новый файл в папку Scripts с именем TimerScript.js типа JScript File.

добавить новый файл JavaScript в папку Scripts

Рис. 08. Добавление нового файла JavaScript в папку Scripts (щелкните, чтобы просмотреть изображение с полным размером)

на веб-сайт добавлен новый файл JavaScript

Рис. 09. новый файл JavaScript добавлен на веб-сайт (щелкните, чтобы просмотреть изображение с полным размером)

Затем добавьте следующий ценария в файл TimerScript.js:

var timerEnabled = true;
function ToggleTimer(btn, timerID)
{
    // Toggle the timer enabled state
    timerEnabled = !timerEnabled;

    // Get a reference to the Timer
    var timer = $find(timerID);

    if (timerEnabled)
    {
        // Start timer
        timer._startTimer();

        // Immediately raise a tick
        timer._raiseTick();

        btn.value = 'Pause';
    }
    else
    {
        // Stop timer
        timer._stopTimer();

        btn.value = 'Resume';
    }
}

Теперь необходимо зарегистрировать этот пользовательский файл JavaScript в ShowRandomProduct.aspx. Вернитесь к ShowRandomProduct.aspx и добавьте на страницу элемент управления ScriptManagerProxy. Задайте для его ID значение MyManagerProxy. Чтобы зарегистрировать пользовательский файл JavaScript, выберите элемент управления ScriptManagerProxy в конструкторе и перейдите к окно свойств. Одно из свойств имеет заголовок Scripts. При выборе этого свойства отображается редактор коллекции ScriptReference, показанный на рис. 10. Нажмите кнопку Добавить, чтобы включить новую ссылку на скрипт, а затем введите путь к файлу скрипта в свойстве Path: ~/Scripts/TimerScript.js.

добавить ссылку на скрипт в элемент управления ScriptManagerProxy

Рис. 10. Добавление ссылки на скрипт в элемент управления ScriptManagerProxy (щелкните, чтобы просмотреть изображение с полным размером)

После добавления ссылки на скрипт декларативная разметка элемента управления ScriptManagerProxy обновляется для включения коллекции <Scripts> с одной записью ScriptReference, как показано в следующем фрагменте разметки:

<asp:ScriptManagerProxy ID="MyManagerProxy" runat="server">
 <Scripts>
 <asp:ScriptReference Path="~/Scripts/TimerScript.js" />
 </Scripts>
</asp:ScriptManagerProxy>

Запись ScriptReference указывает ScriptManagerProxy включить ссылку на файл JavaScript в отрисованной разметке. Это значит, что при регистрации настраиваемого скрипта в ScriptManagerProxy выходные данные страницы, отображаемые ShowRandomProduct.aspx странице, теперь включают еще один тег <script src="url"></script>: <script src="Scripts/TimerScript.js" type="text/javascript"></script>.

Теперь можно вызвать функцию ToggleTimer, определенную в TimerScript.js, из клиентского скрипта на странице ShowRandomProduct.aspx. Добавьте следующий код HTML в UpdatePanel:

<input type="button" id="PauseResumeButton" 
    value="Pause" 
    onclick="ToggleTimer(this, '<%=ProductTimer.ClientID %>');" />

Появится кнопка с текстом "Пауза". При каждом щелчке вызывается функция JavaScript ToggleTimer, передача ссылки на кнопку и id значение элемента управления Timer (ProductTimer). Обратите внимание на синтаксис получения значения id элемента управления Timer. <%=ProductTimer.ClientID%> выдает значение свойства ClientID элемента управления Timer (ProductTimer). В учебнике по именованию ИДЕНТИФИКАТОРов элементов управления на страницах содержимого [SKM3] мы обсуждали различия между значением ID на стороне сервера и результирующим idм на стороне клиента, а также ClientID возвращать idна стороне клиента.

На рис. 11 показана эта страница при первом посещении через браузер. В настоящее время таймер работает и обновляет отображаемые сведения о продукте каждые 15 секунд. На рис. 12 показан экран после нажатия кнопки Пауза. Нажатие кнопки приостановить останавливает таймер и обновляет текст кнопки на "возобновить". Сведения о продукте будут обновлены (и продолжают обновляться каждые 15 секунд) после нажатия кнопки возобновить.

нажмите кнопку приостановить, чтобы остановить элемент управления Timer.

Рис. 11. Нажмите кнопку приостановить, чтобы остановить элемент управления Timer (щелкните, чтобы просмотреть изображение с полным размером)

чтобы перезапустить таймер, нажмите кнопку "возобновить".

Рис. 12. Нажмите кнопку "возобновить", чтобы перезапустить таймер (щелкните, чтобы просмотреть изображение с полным размером)

Сводка

При создании веб-приложений с поддержкой AJAX, использующих платформу ASP.NET AJAX, важно, чтобы на каждую веб-страницу с поддержкой AJAX включался элемент управления ScriptManager. Чтобы упростить этот процесс, можно добавить ScriptManager на главную страницу, а не забывать добавлять ScriptManager на каждую страницу содержимого. На шаге 1 показано, как добавить ScriptManager на главную страницу, когда шаг 2 рассматривал реализацию функций AJAX на странице содержимого.

Если необходимо добавить пользовательские скрипты, ссылки на веб-службы с поддержкой скриптов или настроенные службы проверки подлинности, авторизации или профилей на определенную страницу содержимого, добавьте элемент управления ScriptManagerProxy на страницу содержимого, а затем настройте настройки. На шаге 3 вы узнаете, как использовать ScriptManagerProxy для регистрации пользовательского файла JavaScript на определенной странице содержимого.

Поздравляем с программированием!

Дополнительные материалы

Дополнительные сведения о разделах, обсуждаемых в этом руководстве, см. в следующих ресурсах:

Об авторе

Скотт Митчелл, автор нескольких книг по ASP/ASP. NET и основатель 4GuysFromRolla.com, работал с веб-технологиями майкрософт с 1998. Скотт работает как независимый консультант, преподаватель и модуль записи. Его последняя книга — Sams обучать себя ASP.NET 3,5 за 24 часа. Скотт можно получить по адресу mitchell@4GuysFromRolla.com или через свой блог по адресу http://ScottOnWriting.NET.

Специальная благодарность

Эта серия руководств была рассмотрена многими полезными рецензентами. Хотите ознакомиться с моими будущими статьями MSDN? Если да, расположите строку в mitchell@4GuysFromRolla.com