使用用户控件实现 Web 部件个性化设置

 
演练:使用用户控件实现 Web 部件个性化设置 

        本演练通过实践阐释了如何创建 ASP.NET 用户控件,该控件根据 Web 部件个性化设置在网页上提供用户特定的默认值。

         ASP.NET Web 部件控件集使您可以生成具有模块化布局的网页,以便用户可以根据他们的喜好修改网页的外观和内容。Web 部件有一项主要功能称为“个性化设置”,它允许您保存每个页面的用户特定设置并在将来的浏览器会话中重用这些设置。

         通 过使用 Web 部件和个性化设置,您可以生成包含一项对许多 Web 应用程序都有用的功能的网页:即可以在窗体中提供用户特定的默认值。本演练将演示如何通过实现用户控件(用户控件可以被视为可个性化的 Web 部件控件)提供用户特定的默认值。例如,当您为客户服务代理创建用于填写联机窗体的应用程序时,此开发方法可能很有用。Web 部件和个性化设置功能使您的页面能够识别每个代理。用户控件允许每个代理为窗体上的字段保存默认值,然后在以后访问该页时会自动填写这些默认值。

Note注意

        您在本演练中创建的用户控件不是从 WebPart 类继承的控件。但在本演练中,您将了解到用户控件可以作为 WebPart 控件使用。在本演练过程中,会将用户控件添加到一个 WebPartZoneBase 区域。这样做可以允许 ASP.NET 将该用户控件包装在 GenericWebPart 控件中。然后,该用户控件便可以像任何其他的 WebPart 控件一样工作,并且使您可以利用个性化设置。

通过此演练,您将学会如何执行以下任务:

  • 创建具有可个性化的属性的用户控件,这些属性的值可以保存在长期存储中。

  • 在网页中的窗体上显示用户特定的默认值。

  • 在区域中将用户控件作为真正的 WebPart 控件使用。

Note注意

        可以使用 ASP.NET 配置文件开发此类应用程序。但在这种情况下,您将不存储要在整个应用程序中(如在购物车应用程序中)重用的用户相关信息。相反,您将为每个控件逐页保存用户特定的首选项或设置。有关配置文件的更多信息,请参见 ASP.NET 配置文件属性概述

<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl06cd0fc6b,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl06img,"; </script> 先决条件先决条件

若要完成本演练,您需要:

  • 已在要承载站点的计算机上安装和配置 Internet 信息服务 (IIS)。有关安装和配置 IIS 的详细信息,请参见安装中附带的 IIS 帮助文档,或者参见 Microsoft TechNet 站点(Internet 信息服务 6.0 技术资源)上的联机 IIS 文档。

  • 可以标识单个用户的 ASP.NET 网站。如果已经配置了这样一个站点,则可以将其作为本演练的起点。否则,若要查看有关创建虚拟目录或站点的详细信息,请参见如何:在 IIS 中创建和配置虚拟目录

  • 已配置的个性化设置提供程序和数据库。默认情况下启用 Web 部件个性化设置,而且它使用 SQL 个性化设置提供程序 (SqlPersonalizationProvider) 和 Microsoft SQL Server Standard Edition 来存储个性化设置数据。本演练使用 SSE 和默认的 SQL 提供程序。如果安装了 SSE,则不需要进行任何配置。SSE 是作为 Microsoft Visual Studio 2005 安装的可选部分提供的,也可以从 Microsoft.com 免费下载。若要使用 SQL Server 的一个完整版本,必须安装和配置一个 ASP.NET 应用程序服务数据库,并将 SQL 个性化设置提供程序配置为连接到该数据库。有关详细信息,请参见为 SQL Server 创建和配置应用程序服务数据库。还可以创建和配置自定义提供程序来使用其他非 SQL 数据库或存储解决方案。有关详细信息和代码示例,请参见实现成员资格提供程序

<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl125946424,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl12img,"; </script> 创建可个性化的用户控件创建可个性化的用户控件

在此部分演练的中,将创建一个为代理信息窗体提供用户界面 (UI) 的用户控件。该控件还将公开姓名和电话信息的可个性化属性。

Note注意

不需要启用 Web 部件个性化设置;默认情况下已启用它。有关个性化设置的更多信息,请参见 Web 部件个性化设置概述

为用户控件创建可个性化的属性

  1. 在文本编辑器中,创建一个新文件。将以下控件声明添加到该文件的开头,并添加开始和结束 <script> 标记。您的代码看起来应当类似于下面的代码示例。

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

    C#
    <%@ control language="C#" classname="AccountUserControl" %>
    <script runat="server">
    </script>
  2. <script> 标记中,添加代码创建两个可个性化的属性:一个称为 UserName,另一个称为 Phone,如下例中所示。

    Note注意

    每个属性 (Property) 都有一个 Personalizable 属性 (Attribute)。这使 Web 部件个性化设置能够将属性值存储在提供程序数据库中。

    Visual Basic
      <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

    C#
      [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;
    }
    }
  3. 将该文件命名为 AccountUserControlCS.ascx 或 AccountUserControlVB.ascx(具体取决于所使用的语言),并保存在网站的根目录下。

    Security note安全注意

    该 控件具有一个文本框,用于接受用户输入,这是一个潜在的安全威胁。网页中的用户输入可能会包含具有恶意的客户端脚本。默认情况下,ASP.NET 网页验证用户输入,以确保输入中不包含 HTML 元素或脚本。只要启用了此验证,就不需要显式检查用户输入中的脚本或 HTML 元素。有关更多信息,请参见脚本侵入概述

既然已经添加可个性化的属性来保存默认值,您即可将用户界面控件添加到用户控件以显示用户的姓名和电话号码。

向用户控件添加用户界面控件

  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. 在刚添加的控件下面,添加一个用 <div> 标记包含的 <asp:button> 元素,以通过执行回发保存用户的信息。这些代码应类似于下面的示例。

    <div>
    <asp:button id="Button1" runat="server"
    text="Save Form Values" />
    </div>
  4. 保存该文件。

<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl24a1fc064,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl24img,"; </script> 将用户控件作为 Web 部件控件引用将用户控件作为 Web 部件控件引用

既然已经创建了一个具有可个性化属性的用户控件,您即可创建一个 Web 窗体页,并将该用户控件作为 Web 部件控件承载。为了能够使用个性化设置功能,必须将该控件作为 Web 部件控件承载。

将用户控件作为 Web 部件控件引用

  1. 在文本编辑器中,创建一个新文件。将以下页声明添加到该文件的开头。

    Visual Basic
    <%@ page language="VB" %>

    C#
    <%@ page language="C#" %>
  2. 在页声明的下面添加一个声明,引用您之前创建的用户控件,如下例中所示。

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

    C#
    <%@ register tagprefix="uc1" 
    tagname="AccountUserControl"
    src="AccountUserControlcs.ascx"%>
  3. 在控件引用下面,添加下面的基本页结构,将用户控件作为 Web 部件控件承载。

    Note注意

    为了能够将用户控件作为 Web 部件控件使用,页面中必须包含一个 <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 窗体页中将其作为 Web 部件控件引用。

最后的步骤是测试用户控件。

测试可个性化的用户控件

  1. 在浏览器中加载 Hostaccountcontrol.aspx 页。

  2. 在“Name”(姓名)和“Phone”(电话)字段中输入值,然后单击“Save Form Values”(保存窗体值)按钮。

  3. 关闭浏览器。

  4. 在浏览器中再次加载页。

    您之前输入的值应显示在窗体中。这些值是保存在可个性化属性中的值,当您在浏览器中重新加载该页时,便从数据库中还原了这些值。

  5. 在窗体中输入新值,但不要单击该按钮保存新值。关闭浏览器。

  6. 在浏览器中再次加载页。重新显示在窗体中的值应是您输入并保存到可个性化属性中的原始值。

<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl3079a96a4,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl30img,"; </script> 后续步骤后续步骤

本演练演示了创建具有可个性化属性的用户控件的基本任务。您所创建的控件允许您保存特定控件和页面的用户特定设置,并会在用户通过新的浏览器会话重新访问该页时显示这些已保存的设置。对进一步研究的建议包括:

<script type="text/Javascript"> var ExpCollDivStr = ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl3437bb0da,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl34img,"; </script> 请参见请参见
MSDN: http://msdn2.microsoft.com/zh-cn/library/784d8z92(VS.80).aspx
概念
ASP.NET Web 部件概述
Web 部件个性化设置概述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值