MySQL Connector/NET 提供了一个 Web 部件个性化提供程序,允许您使用 MySQL 服务器存储个性化数据。
此功能是在 Connector/NET 6.9.0 中添加的。
本教程演示如何使用 Connector/NET 配置 Web 部件个性化提供程序。
要配置提供程序,请执行以下操作:
添加对网站或 Web 应用程序项目的
MySql.Data
引用 。MySql.Web
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 部件控件,请按照下列步骤操作:
使用 Connector/NET ASP.NET Membership 创建 Web 应用程序。有关执行此操作的信息,请参阅 第 6.2.1 节“教程:连接器/NET ASP.NET 成员身份和角色提供者”。
创建一个新的 ASP.NET 页面,然后切换到“设计”视图。
从工具箱中,将一个 WebPartManager 控件拖到页面上。
现在定义一个三列一行的 HTML 表格。
从WebParts Toolbox中,将一个控件拖放
WebPartZone
到第一列和第二列中。从WebParts Toolbox
CatalogZone
中,将带有PageCatalogPart
和 控件的控件拖放EditorZone
到第三列。将控件添加到
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>
在 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>
以下代码填充显示模式列表、显示当前范围、重置个性化状态、切换范围(在用户和共享范围之间)以及更改显示模式。
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 部件页面。该页面应类似于下图中显示的示例,其中“切换范围”按钮设置为
Shared
。该页面还包括下拉列表、重置按钮以及左区和主区控件。最初当用户帐户未通过身份验证时,范围默认为共享。必须对用户帐户进行身份验证才能更改 Web 部件控件上的设置。下图显示了一个示例,其中经过身份验证的用户能够使用浏览下拉列表自定义控件。列表中的选项是
Design
、Catalog
和Edit
。单击切换范围将应用程序切换回共享范围。
现在,您可以在特定用户或所有用户级别使用
Edit
或显示模式 对区域进行个性化设置 。Catalog
下图显示了Catalog
从下拉列表中选择的内容,其中包括之前添加的 Catalog Zone 控件。