6.2.3 教程:Web 部件个性化提供程序

MySQL Connector/NET 提供了一个 Web 部件个性化提供程序,允许您使用 MySQL 服务器存储个性化数据。

笔记

此功能是在 Connector/NET 6.9.0 中添加的。

本教程演示如何使用 Connector/NET 配置 Web 部件个性化提供程序。

最低要求

  • 具有成员资格提供程序的 ASP.NET 网站或 Web 应用程序

  • .NET 框架 3.0

  • MySQL 5.5

配置 MySQL Web 部件个性化提供程序

要配置提供程序,请执行以下操作:

  1. 添加对网站或 Web 应用程序项目的 MySql.Data引用 。MySql.Web

  2. system.web在文件的部分中 包含连接器/NET 个性化提供程序 web.config

    <webParts>
     <personalization defaultProvider="MySQLPersonalizationProvider">
      <providers>
        <clear/>
        <add name="MySQLPersonalizationProvider"
          type="MySql.Web.Personalization.MySqlPersonalizationProvider,
            MySql.Web, Version=6.9.3.0, Culture=neutral,
            PublicKeyToken=c5687fc88969c44d"
          connectionStringName="LocalMySqlServer"
          applicationName="/" />
      </providers>
      <authorization>
        <allow verbs="modifyState" users="*" />
        <allow verbs="enterSharedScope" users="*"/>
      </authorization>
     </personalization>
    </webParts>

创建 Web 部件控件

要创建 Web 部件控件,请按照下列步骤操作:

  1. 使用 Connector/NET ASP.NET Membership 创建 Web 应用程序。有关执行此操作的信息,请参阅 第 6.2.1 节“教程:连接器/NET ASP.NET 成员身份和角色提供者”

  2. 创建一个新的 ASP.NET 页面,然后切换到“设计”视图。

  3. 工具箱中,将一个 WebPartManager 控件拖到页面上。

  4. 现在定义一个三列一行的 HTML 表格。

  5. WebParts Toolbox中,将一个控件拖放WebPartZone到第一列和第二列中。

  6. WebParts ToolboxCatalogZone中,将带有 PageCatalogPart和 控件的控件拖放EditorZone到第三列。

  7. 将控件添加到WebPartZone,它应该类似于以下示例:

    <table>
      <tr>
        <td>
          <asp:WebPartZone ID="LeftZone" runat="server" HeaderText="Left Zone">
            <ZoneTemplate>
              <asp:Label ID="Label1" runat="server" title="Left Zone">
                <asp:BulletedList ID="BulletedList1" runat="server">
                  <asp:ListItem Text="Item 1"></asp:ListItem>
                  <asp:ListItem Text="Item 2"></asp:ListItem>
                  <asp:ListItem Text="Item 3"></asp:ListItem>
                </asp:BulletedList>
              </asp:Label>
            </ZoneTemplate>
          </asp:WebPartZone>
        </td>
        <td>
          <asp:WebPartZone ID="MainZone" runat="server" HeaderText="Main Zone">
            <ZoneTemplate>
              <asp:Label ID="Label11" runat="server" title="Main Zone">
                <h2>This is the Main Zone</h2>
              </asp:Label>
            </ZoneTemplate>
          </asp:WebPartZone>
        </td>
        <td>
          <asp:CatalogZone ID="CatalogZone1" runat="server">
            <ZoneTemplate>
              <asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
            </ZoneTemplate>
          </asp:CatalogZone>
          <asp:EditorZone ID="EditorZone1" runat="server">
            <ZoneTemplate>
              <asp:LayoutEditorPart ID="LayoutEditorPart1" runat="server" />
              <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
            </ZoneTemplate>
          </asp:EditorZone>
        </td>
      </tr>
    </table>
  8. 在 HTML 表格之外,添加一个下拉列表、两个按钮和一个标签,如下所示。

    <asp:DropDownList ID="DisplayModes" runat="server" AutoPostBack="True"
       OnSelectedIndexChanged="DisplayModes_SelectedIndexChanged">
    </asp:DropDownList>
    <asp:Button ID="ResetButton" runat="server" Text="Reset"
       OnClick="ResetButton_Click" />
    <asp:Button ID="ToggleButton" runat="server" OnClick="ToggleButton_Click"
       Text="Toggle Scope" />
    <asp:Label ID="ScopeLabel" runat="server"></asp:Label>
  9. 以下代码填充显示模式列表、显示当前范围、重置个性化状态、切换范围(在用户和共享范围之间)以及更改显示模式。

    public partial class WebPart : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
        if (!IsPostBack)
        {
          foreach (WebPartDisplayMode mode in WebPartManager1.SupportedDisplayModes)
          {
            if (mode.IsEnabled(WebPartManager1))
            {
              DisplayModes.Items.Add(mode.Name);
            }
          }
        }
        ScopeLabel.Text = WebPartManager1.Personalization.Scope.ToString();
      }
    
      protected void ResetButton_Click(object sender, EventArgs e)
      {
        if (WebPartManager1.Personalization.IsEnabled &&
          WebPartManager1.Personalization.IsModifiable)
        {
          WebPartManager1.Personalization.ResetPersonalizationState();
        }
      }
    
      protected void ToggleButton_Click(object sender, EventArgs e)
      {
        WebPartManager1.Personalization.ToggleScope();
      }
    
      protected void DisplayModes_SelectedIndexChanged(object sender, EventArgs e)
      {
        var mode = WebPartManager1.SupportedDisplayModes[DisplayModes.SelectedValue];
        if (mode != null && mode.IsEnabled(WebPartManager1))
        {
          WebPartManager1.DisplayMode = mode;
        }
      }
    }

测试 Web 部件更改

使用以下步骤验证您的更改:

  1. 运行应用程序并打开 Web 部件页面。该页面应类似于下图中显示的示例,其中“切换范围”按钮设置为 Shared。该页面还包括下拉列表、重置按钮以及左区和主区控件。

    图 6.3 Web 部件页面

    内容在周围的文字中描述。

    最初当用户帐户未通过身份验证时,范围默认为共享。必须对用户帐户进行身份验证才能更改 Web 部件控件上的设置。下图显示了一个示例,其中经过身份验证的用户能够使用浏览下拉列表自定义控件。列表中的选项是DesignCatalogEdit

    图 6.4 经过身份验证的用户控件

    内容在周围的文字中描述。

  2. 单击切换范围将应用程序切换回共享范围。

  3. 现在,您可以在特定用户或所有用户级别使用Edit或显示模式 对区域进行个性化设置 。Catalog下图显示了Catalog从下拉列表中选择的内容,其中包括之前添加的 Catalog Zone 控件。

    图 6.5 个性化区域

    内容在周围的文字中描述。