Пошаговое руководство. Реализация персонализации веб-частей при помощи пользовательского элемента управления
Обновлен: Ноябрь 2007
В данном пошаговом руководстве показано, как строить пользовательские элементы управления ASP.NET, которые основываются на персонализации веб-частей для указания значений по умолчанию на веб-узле для каждого пользователя.
Веб-части ASP.NET позволяют создавать веб-страницы с модульными макетами, позволяющими пользователям изменять внешний вид и содержание в соответствии с их предпочтениями. Основной функциональной возможностью веб-частей является персонализация, которая позволяет сохранять параметры каждой страницы и использовать их в последующих сеансах обозревателя отдельно для каждого пользователя.
При помощи веб-частей и персонализации можно создавать веб-страницы, которые имеют функцию, полезную во многих приложениях: возможность предоставления значений по умолчанию для каждого пользователя в виде формы. В данном пошаговом руководстве показано, как создавать значения по умолчанию для каждого пользователя при помощи пользовательского элемента управления, который можно считать лично настраиваемым элементом управления веб-частями. Данный подход к разработке может быть полезен, например, при создании приложений для агентов клиентских служб для заполнения форм в Интернете. Возможности веб-частей и персонализации позволяют отличать каждого агента на странице. Пользовательский элемент управления позволяет каждому агенту сохранять значения по умолчанию для полей в форме, а затем значения по умолчанию могут быть автоматически заполнены при последующих посещениях страницы.
Примечание. |
---|
Пользовательский элемент управления, который создается в ходе данного пошагового руководства, не наследуется из класса WebPart. В данном пошаговом руководстве показано, что пользовательский элемент управления может функционировать как элемент управления WebPart. В ходе пошагового руководства в область WebPartZoneBase добавляется пользовательский элемент управления. Это позволяет ASP.NET включить пользовательский элемент управления в элемент управления GenericWebPart. Тогда пользовательский элемент управления будет работать как любой другой элемент управления WebPart и позволит работать с персонализацией. |
В процессе выполнения этого пошагового руководства вы научитесь:
Создавать пользовательские элементы управления с персонализируемыми свойствами, значения которых могут сохраняться на протяжении длительного времени.
Отображать значения по умолчанию в виде формы на веб-странице для каждого пользователя.
Работать с пользовательскими элементами управления в области, как с обычным элементом управления WebPart.
Примечание. Такой тип приложений можно разрабатывать при помощи профилей ASP.NET. Однако в таком случае информация, сохраняемая о пользователе, не сможет быть использована во всем приложении, как, например, в приложении корзины покупок. Вместо этого сохраняются предпочтения или параметры каждого элемента управления для каждого пользователя на каждой странице по отдельности. Дополнительные сведения о профилях см. в разделе Общие сведения о свойствах профилей ASP.NET.
Обязательные компоненты
Для выполнения этого пошагового руководства потребуется:
Службы IIS (IIS), установленные и настроенные на компьютере, на котором будет размещен узел. Подробные сведения об установке и настройке IIS содержатся в справочной документации IIS, включенной в состав установки, или в электронной документации IIS на узле Microsoft TechNet (Internet Information Services 6.0 Technical Resources).
Веб-узел ASP.NET, идентифицирующий отдельных пользователей. Если есть уже настроенный такой узел, то можно использовать его в качестве отправной точки для данного пошагового руководства. Если нет, то сведения о создании виртуального каталога или узла содержатся в разделе Практическое руководство. Создание и настройка виртуальных каталогов в IIS 5.0 и 6.0.
Настроенные поставщик персонализации и база данных. По умолчанию персонализация веб-частей включена и использует поставщика персонализации SQL (SqlPersonalizationProvider) вместе с Microsoft SQL Server Standard Edition для хранения данных персонализации. В данном пошаговом руководстве используется SSE и стандартный поставщик SQL. При наличии установленного SSE настройка не требуется. SSE входит в состав Microsoft Visual Studio 2005 как необязательная часть установки, или как бесплатно загружаемая. Дополнительные сведения см. на веб-странице Microsoft SQ Web page. Для использования одной из полных версий SQL Server необходимо установить и настроить базу данных служб приложений ASP.NET и настроить поставщика персонализации SQL для подключения к этой базе данных. Дополнительные сведения см. в разделе Создание и настройка базы данных служб приложения для SQL Server. Можно также создать и настроить пользовательский поставщик для использования с другими решениями, не являющимися базами данных или хранилищами SQL. Сведения и пример кода содержатся в разделе Реализация поставщика членства.
Создание пользовательского элемента управления, основанного на шаблоне
В этой части пошагового руководства будет создан пользовательский элемент управления, который обеспечивает пользовательский интерфейс для информационной формы агента. Элемент управления также предоставляет персонализируемые свойства для данных об имени и телефоне.
Примечание. |
---|
Для включения персонализации веб-частей не нужно ничего делать, она включена по умолчанию. Дополнительные сведения о персонализации см. в разделе Общие сведения о персонализации веб-частей. |
Создание персонализируемых свойств для пользовательского элемента управления
В текстовом редакторе создайте новый файл и добавьте следующее объявление элемента управления в его начало, рядом с тегами открытия и закрытия <script>.
<%@ control language="VB" classname="AccountUserControl" %> <script runat="server"> </script>
<%@ control language="C#" classname="AccountUserControl" %> <script runat="server"> </script>
Внутри тегов <script> добавьте код для создания двух персонализируемых свойств: одного с именем UserName, а другое с именем Phone, как это показано в следующем примере.
Примечание. Каждое свойство имеет атрибут Personalizable. Это позволяет персонализации веб-частей хранить значения свойств в базе данных.
<Personalizable()> _ Property UserName() As String Get If Textbox1.Text Is Nothing Or Textbox1.Text.Length < 0 Then Return String.Empty Else Return Textbox1.Text End If End Get Set(ByVal value As String) Textbox1.Text = value End Set End Property <Personalizable()> _ Property Phone() As String Get If Textbox2.Text Is Nothing Or Textbox2.Text.Length < 0 Then Return String.Empty Else Return Textbox2.Text End If End Get Set(ByVal value As String) Textbox2.Text = value End Set End Property
[Personalizable] public string UserName { get { if(Textbox1.Text == null | Textbox1.Text.Length < 0) return String.Empty; else return Textbox1.Text; } set { Textbox1.Text = value; } } [Personalizable] public string Phone { get { if(Textbox2.Text == null | Textbox2.Text.Length < 0) return String.Empty; else return Textbox2.Text; } set { Textbox2.Text = value; } }
Примечание о безопасности. В этом элементе управления имеется текстовое поле, принимающее ввод пользователя, что является потенциальной угрозой безопасности. По умолчанию веб-страницы ASP.NET проверяют введенные пользователем данные на предмет наличия в них HTML-элементов или сценариев. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.
Назовите файл AccountUserControlCS.ascx или AccountUserControlVB.ascx (зависимости от языка, используемого для образца) и сохраните его в корневой папке веб-узла.
Теперь, когда добавлены персонализируемые свойства для хранения значений по умолчанию, можно добавлять элементы управления ИП в пользовательский элемент управления, чтобы отображать имя пользователя и его телефонный номер.
Добавление элементов управления ИП в пользовательский элемент управления
Под тегами <script> добавьте элемент управления Label и элемент управления TextBox, между тегами <div>, чтобы записать туда имя пользователя, как это показано в следующем примере:
<div> <asp:label id="Label1" runat="server">Name</asp:label> <asp:textbox id="Textbox1" runat="server" /> </div>
Под элементами управления, которые только что были созданы, добавьте элементы управления Label и TextBox между тегами <div>, чтобы записать туда номер телефона пользователя, как это показано в следующем примере:
<div> <asp:label id="Label2" runat="server">Phone</asp:label> <asp:textbox id="Textbox2" runat="server" /> </div>
Под элементом управления, который был только что добавлен, добавьте элемент <asp:button> между тегами <div>, чтобы сохранять информацию о пользователе при помощи обратной передачи:
<div> <asp:button id="Button1" runat="server" text="Save Form Values" /> </div>
Сохраните файл.
Ссылка на пользовательский элемент управления, как на элемент управления Web Parts
Теперь, когда добавлен пользовательский элемент управления с персонализируемыми свойствами, для размещения пользовательского элемента управления в качестве элемента управления Web Parts можно создавать веб-страницу ASP.NET. Важно поместить элемент управления, как элемент управления Web Parts, чтобы были доступны функции персонализации.
Ссылка на пользовательский элемент управления, как на элемент управления Web Parts
В текстовом редакторе создайте новый файл и добавьте следующее страничное объявление в его начало:
<%@ page language="VB" %>
<%@ page language="C#" %>
Под объявлением страницы добавьте объявление, чтобы создать ссылку на созданный ранее пользовательский элемент управления, как показано в следующем примере:
<%@ register tagprefix="uc1" tagname="AccountUserControl" src="AccountUserControlvb.ascx"%>
<%@ register tagprefix="uc1" tagname="AccountUserControl" src="AccountUserControlcs.ascx"%>
Под ссылкой на элемент управления добавьте следующую структуру базовой страницы, чтобы поместить пользовательский элемент управления, как элемент управления Web Parts.
Примечание. Чтобы пользовательский элемент управления работал как элемент управления Web Parts, необходимо, чтобы на странице был элемент <asp:webpartmanager>, а пользовательский элемент управления должен содержаться внутри элемента <asp:webpartzone> и последующего элемента <zonetemplate>.
<html> <head runat="server"> <title>Personalizable User Control</title> </head> <body> <form id="form1" runat="server"> <asp:webpartmanager id="WebPartManager1" runat="server" /> <asp:webpartzone id="zone1" runat="server" headertext="Main"> <zonetemplate> <uc1:AccountUserControl runat="server" id="accountwebpart" title="Agent Information" /> </zonetemplate> </asp:webpartzone> </form> </body> </html>
Назовите файл Hostaccountcontrol.aspx и сохраните его в том же каталоге, что и пользовательский элемент управления.
В итоге был создан персонализируемый пользовательский элемент управления со ссылкой на него, как на элемент управления Web Parts на странице веб-форм. Последним шагом является проверка этого пользовательского элемента.
Проверка пользовательского элемента управления
Загрузите страницу Hostaccountcontrol.aspx в обозревателе.
Введите значения в поля Имя и Телефон и нажмите кнопку Сохранить значения формы.
Закройте обозреватель.
Снова загрузите веб-страницу в обозревателе.
Предварительно введенные значения отобразятся в форме. Эти значения были сохранены в персонализируемых свойствах и были восстановлены из базы данных при повторной загрузке страницы в обозревателе.
Введите новые значения в поля формы, но не нажимайте кнопку сохранения.
Закройте обозреватель.
Снова загрузите веб-страницу в обозреватель.
Оригинальные значения, которые были сохранены в персонализируемых свойствах, отображаются в форме, так как новые значения не были сохранены.
Следующие действия
В данном пошаговом руководстве продемонстрированы основные задачи, участвующие в создании пользовательского элемента управления с персонализируемыми свойствами. Был создан элемент управления, который позволяет сохранять параметры каждого пользователя для отдельного элемента управления и страницы и впоследствии отображать сохраненные параметры при последующих посещениях пользователем страницы во время нового сеанса обозревателя. В качестве дополнительного материала рекомендуется изучить следующее:
Другие компоненты, используемые при создании страницы Web Parts. Общие сведения см. в разделе Пошаговое руководство. Создание страницы веб-частей.
Более подробная информация о пользовательских элементах управления. Дополнительные сведения см. в разделе Общие сведения о пользовательских элементах управления ASP.NET.
Создание собственных пользовательских элементов управления Web Parts, которые имеют больше возможностей для программирования, чем пользовательские элементы управления, и используют полный набор функций Web Parts. Дополнительные сведения см. в разделе Практическое руководство. Интерпретация пользовательского элемента управления как элемента управления веб-частей.