Пошаговое руководство. Реализация персонализации веб-частей при помощи пользовательского элемента управления

Visual Studio 2010

Обновлен: Ноябрь 2007

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

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

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

784d8z92.alert_note(ru-ru,VS.100).gifПримечание.

Пользовательский элемент управления, который создается в ходе данного пошагового руководства, не наследуется из класса WebPart. В данном пошаговом руководстве показано, что пользовательский элемент управления может функционировать как элемент управления WebPart. В ходе пошагового руководства в область WebPartZoneBase добавляется пользовательский элемент управления. Это позволяет ASP.NET включить пользовательский элемент управления в элемент управления GenericWebPart. Тогда пользовательский элемент управления будет работать как любой другой элемент управления WebPart и позволит работать с персонализацией.

В процессе выполнения этого пошагового руководства вы научитесь:

  • Создавать пользовательские элементы управления с персонализируемыми свойствами, значения которых могут сохраняться на протяжении длительного времени.

  • Отображать значения по умолчанию в виде формы на веб-странице для каждого пользователя.

  • Работать с пользовательскими элементами управления в области, как с обычным элементом управления WebPart.

    784d8z92.alert_note(ru-ru,VS.100).gifПримечание.

    Такой тип приложений можно разрабатывать при помощи профилей 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. Сведения и пример кода содержатся в разделе Реализация поставщика членства.

В этой части пошагового руководства будет создан пользовательский элемент управления, который обеспечивает пользовательский интерфейс для информационной формы агента. Элемент управления также предоставляет персонализируемые свойства для данных об имени и телефоне.

784d8z92.alert_note(ru-ru,VS.100).gifПримечание.

Для включения персонализации веб-частей не нужно ничего делать, она включена по умолчанию. Дополнительные сведения о персонализации см. в разделе Общие сведения о персонализации веб-частей.

Создание персонализируемых свойств для пользовательского элемента управления

  1. В текстовом редакторе создайте новый файл и добавьте следующее объявление элемента управления в его начало, рядом с тегами открытия и закрытия <script>.

    <%@ control language="VB" classname="AccountUserControl" %>
    <script runat="server">
    </script>
    

    <%@ control language="C#" classname="AccountUserControl" %>
    <script runat="server">
    </script>
    
  2. Внутри тегов <script> добавьте код для создания двух персонализируемых свойств: одного с именем UserName, а другое с именем Phone, как это показано в следующем примере.

    784d8z92.alert_note(ru-ru,VS.100).gifПримечание.

    Каждое свойство имеет атрибут 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;
        }
      }
    
    
    784d8z92.alert_security(ru-ru,VS.100).gifПримечание о безопасности.

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

  3. Назовите файл AccountUserControlCS.ascx или AccountUserControlVB.ascx (зависимости от языка, используемого для образца) и сохраните его в корневой папке веб-узла.

Теперь, когда добавлены персонализируемые свойства для хранения значений по умолчанию, можно добавлять элементы управления ИП в пользовательский элемент управления, чтобы отображать имя пользователя и его телефонный номер.

Добавление элементов управления ИП в пользовательский элемент управления

  1. Под тегами <script> добавьте элемент управления Label и элемент управления TextBox, между тегами <div>, чтобы записать туда имя пользователя, как это показано в следующем примере:

    <div>
    <asp:label id="Label1" runat="server">Name</asp:label>
    <asp:textbox id="Textbox1" runat="server" />
    </div>
    
  2. Под элементами управления, которые только что были созданы, добавьте элементы управления Label и TextBox между тегами <div>, чтобы записать туда номер телефона пользователя, как это показано в следующем примере:

    <div>
    <asp:label id="Label2" runat="server">Phone</asp:label>
    <asp:textbox id="Textbox2" runat="server" />
    </div>
    
  3. Под элементом управления, который был только что добавлен, добавьте элемент <asp:button> между тегами <div>, чтобы сохранять информацию о пользователе при помощи обратной передачи:

    <div>
    <asp:button id="Button1" runat="server" 
      text="Save Form Values" />
    </div>
    
  4. Сохраните файл.

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

Ссылка на пользовательский элемент управления, как на элемент управления Web Parts

  1. В текстовом редакторе создайте новый файл и добавьте следующее страничное объявление в его начало:

    <%@ page language="VB" %>
    

    <%@ page language="C#" %>
    
  2. Под объявлением страницы добавьте объявление, чтобы создать ссылку на созданный ранее пользовательский элемент управления, как показано в следующем примере:

    <%@ register tagprefix="uc1" 
        tagname="AccountUserControl" 
        src="AccountUserControlvb.ascx"%>
    

    <%@ register tagprefix="uc1" 
        tagname="AccountUserControl" 
        src="AccountUserControlcs.ascx"%>
    
  3. Под ссылкой на элемент управления добавьте следующую структуру базовой страницы, чтобы поместить пользовательский элемент управления, как элемент управления Web Parts.

    784d8z92.alert_note(ru-ru,VS.100).gifПримечание.

    Чтобы пользовательский элемент управления работал как элемент управления 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>
    
  4. Назовите файл Hostaccountcontrol.aspx и сохраните его в том же каталоге, что и пользовательский элемент управления.

В итоге был создан персонализируемый пользовательский элемент управления со ссылкой на него, как на элемент управления Web Parts на странице веб-форм. Последним шагом является проверка этого пользовательского элемента.

Проверка пользовательского элемента управления

  1. Загрузите страницу Hostaccountcontrol.aspx в обозревателе.

  2. Введите значения в поля Имя и Телефон и нажмите кнопку Сохранить значения формы.

  3. Закройте обозреватель.

  4. Снова загрузите веб-страницу в обозревателе.

    Предварительно введенные значения отобразятся в форме. Эти значения были сохранены в персонализируемых свойствах и были восстановлены из базы данных при повторной загрузке страницы в обозревателе.

  5. Введите новые значения в поля формы, но не нажимайте кнопку сохранения.

  6. Закройте обозреватель.

  7. Снова загрузите веб-страницу в обозреватель.

    Оригинальные значения, которые были сохранены в персонализируемых свойствах, отображаются в форме, так как новые значения не были сохранены.

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

Показ: