Поделиться через


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

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

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

Введение

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

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

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

Примечание

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

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

Элемент управления ScriptManager создает разметку, которая предписывает браузеру скачать файлы JavaScript, которые определяют ASP.NET клиентскую библиотеку AJAX. Он также добавляет немного встроенного Кода 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 на страницу master, который затем внедряет этот необходимый скрипт на все страницы содержимого. При таком подходе не нужно помнить о добавлении ScriptManager на новую страницу, которая использует платформу ASP.NET AJAX, так как она уже включена в страницу master. На шаге 1 пошаговые инструкции по добавлению ScriptManager на страницу master.

Примечание

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

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

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

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

Примечание

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

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

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

Откройте страницу Site.master 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 Framework со страницы содержимого

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

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

Добавление новой страницы ASP.NET на веб-сайт

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

Напомним, что в учебнике Указание заголовка, метатегов и других заголовков 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. Из Designer перетащите элемент управления 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 включает элемент управления Таймер, который выполняет обратную передачу в указанное время; при обратной отправке возникает событие таймера 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, вызвав метод DetailsView DataBind . При этом DetailsView будет повторно извлекать данные из своего элемента управления источником данных, который выберет и отобразит новую случайно выбранную запись (как при перезагрузке страницы, нажав кнопку "Обновить" в браузере).

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

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

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

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 секунд после того, как элемент управления "Таймер" будет "установлен" и updatePanel обновлен для отображения сведений о новом продукте.

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

Добавление нового файла JavaScript в папку Scripts

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

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

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

Затем добавьте в файл следующую TimerScript.js команду scrip:

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 в Designer и перейдите к окно свойств. Одно из свойств называется 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 %>');" />

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

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

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

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

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

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

Сводка

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

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

Счастливое программирование!

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

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

Об авторе

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

Особая благодарность

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