第 6 章 Web 窗体的高级控件
上一章中讲解了 ASP.NET 中常用的基本控件,ASP.NET 不仅提供了常用的基本控件如标签控件、
文本框控件等,还提供了高级的 Web 窗体的控件。这些控件能够轻松实现更多在 ASP 开发中难以实现
的效果。
6.1 登录控件
对于目前常用的网站系统而言,登录功能是必不可少的,例如论坛、电子邮箱、在线购物等。登
录功能能够让网站准确的验证用户的身份。用户能够访问该网站时,可以注册并登录,登录后的用户
还能够注销登录状态以保证用户资料的安全性。ASP.NET 就提供了一系列的登录控件方便登录功能的
开发。
6.1.1 登录控件(Login)
登录控件是一个复合控件,它包含用户名和密码文本框,以及一个询问用户是否希望在下一次访
问该页面时记起其身份的复选框。当用户勾选此选项时,下一次用户访问此网站后,将自动进行身份
验证。创建一个登录控件代码,系统会自动生成相应的 HTML 代码,示例代码如下所示。
<asp:Login ID="Login1" runat="server">
</asp:Login>
上述代码则创建了一个登录控件,如图 6-1 所示。开发人员可以通过属性的设置更改登录控件的样
式等,如图 6-2 所示。
图 6-1 默认登录窗口 图 6-2 登录框属性的设置
开发人员能够使用登录控件执行用户登录操作而无需复杂的代码实现,登录控件常用的属性如下
所示。
Orientation:控件的一般布局。
TextLayout:标签相对于文本框的布局。
CreatUserIconUrl:用户创建用户连接的图标的 URL。
CreatUserText:为“创建用户”连接显示的文本。
CreatUserUrl:创建用户页的 URL。
HelpPageIconUrl:用于帮助页连接的图标的 URL。
HelpPageText:为帮助连接显示的文本。
HelpPageUrl:帮助页的 URL。
PasswordRecoveryIconUrl:用于密码回复连接的图标的 URL。
PasswordRecoveryUrl:为密码回复连接显示的文本。
PasswordRecoveryText:密码回复页的 URL。
MembershipProvider:成员资格提供程序的名称。
FailuteText:当登录尝试失败时显示的文本。
InstructionText:为给出说明所显示的文本。
LoginButtonImageUrl:为“登录”按钮显示的图像的 URL。
LoginButtonText:为“登录”按钮显示的文本。
LoginButtonType:“登录”按钮的类型。
PasswordLableText:密码标识文本框内的文本。
RememberMeText:为“记住我”复选框所显示的文本。
TitleText:为标题显示的文本。
UserName:用户名文本框内的初始值。
UserNameLableText:标识用户名文本框的文本。
DestinationPageUrl:用户成功登录时被定向到的 URL。
DisplayRememberMe:是否显示“记住我”复选框。
Enabled:控件是否处于启动状态。
RememberMeSet:“记住我”复选框是否初始化被选中。
VisibleWhenLoggedIn:是否控件在用户登录时保持可见。
PasswordRequiredErrorMessage:密码为空时在验证摘要中显示的文本。
UserNameRequiredErrorMessage:用户名为空时在验证摘要中显示的文本。
同样,登录控件还包括许多常用的事件,登录控件常用的事件如下所示:
Authenticate:当用户使用登录控件登录到网站时,引发该事件。
LoggedIn:对用户进行身份验证后引发该事件。
LoggingIn:对用户进行身份验证前引发该事件。
LoginError:对用户进行用户身份验证失败时引发该事件。
开发人员能够在页面中拖动相应的登录控件实现登录操作,使用登录控件进行登录操作可以直接
进行用户的信息的查询而无需复杂的登录实现。
6.1.2 登录名称控件(LoginName)
登录名称控件(LoginName)是一个用来显示已经成功登录的用户的控件。在 Web 应用程序开发
中,开发人员常常需要在页面中通知相应的用户已经登录,如用户在商品网站上进行登录,登录成功
后可以在相应的页面中提示“您已登录,您的用户名是 XXX”等,这样不仅能够提高用户的友好度,也
能够让开发人员在 Web 应用程序中方便的对用户信息做收集整理。
158
开发人员能够方便的在应用程序中拖动 LoginName 控件用于用户名的呈现,拖动到页面中,系统
生成的 HTML 代码如下所示。
<asp:LoginName ID="LoginName1" runat="server" />
上述代码则实现了一个登录名称控件,开发人员能够将该控件放置在页面中的任何位置进行页面
呈现,当用户登录后,该控件能够获取用户的相应信息并呈现用户名在控件中。登录控件页面效果如
图 6-3 所示。
图 6-3 登录名称控件
注意: LoginName 控件只能 够 在 <body>标记内的 <form> 标 记中使用 , 该 控 件 不能够使用于
<title>、<style>等标记中。
在 LoginName 控件中,最常用的属性为 FormatString 属性,该属性用于格式化用户名输出。在控
件的 FormatString 属性中,“{0}”字符串用于显式用户名,开发人员能够配置相应的字符串进行输出,
例如配置成“您好,{0},您已经登录!”,可以在相应的占位符中呈现相应的用户名,如图 6-4 所示。
图 6-4 格式化输出用户名
正如图 6-4 所示,当对 LoginName 进行格式化规定后,用户名能够被格式化输出,例如当用户
soundbbg 登录在 Web 应用后,该控件会呈现“您好,soundbbg,您已登录!”。开发人员只需要通过简
单的配置就能够实现复杂的登录显示功能操作的实现。
6.1.3 登录视图控件(LoginView)
在应用程序的开发过程中,通常需要对不同的身份和权限的用户进行不同登录样式的呈现,开发
人员可以为用户配置内置对象以呈现不同的页面效果。但是在页面请求时,还需要对用户的身份进行
验证。在 ASP.NET 2.0 之后的版本中,系统提供了 LoginView 控件用于不同用户权限之间的视图的区
分。
在开发一个应用程序时,开发人员希望应用程序能够实现功能当用户在网站中没有登录时,用户
看到的视图是没有登录时的视图,包括网站的风格、系统的提示信息等。而当用户登录后,用户看到
的视图是登录后的视图,同样包括网站的风格、系统的提示信息等。LoginView 控件为开发人员提供了
不同权限的用户进行不同视图的查看的功能,开发人员能够拖动 LoginView 控件在页面中以编辑不同
159
的页面进行开发。
拖动一个 LoginView 控件在页面中,开发人员能够通过编辑不同的模板进行不同权限的页面的编
写,拖动 LoginView 控件后系统生成的 HTML 代码如下所示。
<asp:LoginView ID="LoginView1" runat="server">
</asp:LoginView>
上述代码为默认的 LoginView 控件的代码,开发人员需要通过编写相应的模板以便不同的用户查
看不同的页面,在 LoginView 控件中,包括两个最常用的模板,这两个模板及其作用分别如下所示。
AnonymousTemplate:匿名模板,当用户没有进行登录时,该模板会呈现在匿名用户面前。
LoggedInTemplate:已登录模板,当用户已经登录成功后,该模板会呈现在已经登录的用户面
前。
开发 人员 可 以 通 过 编 写相 应 的 模 板 进 行页 面的 呈 现 , 当用 户 没 有登 录 时 , 用户 可以 看见
AnonymousTemplate 模板中的内容而无法看见 LoggedInTemplate 模板的内容;而如果用户已经登录,
则登录过后的用户能够看见 LoggedInTemplate 模板的内容而无法看见 AnonymousTemplate 模板的内容,
如图 6-5 所示。
图 6-5 LoginView 控件
在 AnonymousTemplate 模板中,该模板通过获取和判断 PageUser 属性的 Name 属性进行判断。如
果 PageUser 属性的 Name 属性为空时,AnonymousTemplate 模板则不会向通过身份验证的用户的呈现
相应的页面。开发人员可以通过编写 AnonymousTemplate 模板和 LoggedInTemplate 模板进行不同用户
的样式呈现,示例代码如下所示。
<body>
<form id="form1" runat="server">
<div>
<asp:LoginView ID="LoginView1" runat="server">
<LoggedInTemplate>
这是一个登录用户可以访问的页面..
</LoggedInTemplate>
<AnonymousTemplate>
这是一个匿名用户可以访问的页面..
</AnonymousTemplate>
</asp:LoginView>
</div>
</form>
</body>
上述代码为不同权限的用户配置了不同的模板,当不同权限的用户访问页面时,其看到的页面样
式也是不同的。在 LoginView 控件中,还能够为不同权限和身份的用户配置不同的模板,开发人员能
够为不同的用户分配不同的角色。当用户被分配了不同的角色后,用户能够通过相应的角色访问相应
的模板,例如普通用户可以访问普通用户模板,VIP 用户可以访问 VIP 模板而管理员可以访问管理员
模板。
160
在 LoginView 控件中,单击 RoleGroup 集合,可以添加相应的 LoginView 控件的 RoleGroup 集合,
如图 6-6 所示。
图 6-6 添加 RoleGroup 集合
这里添加了两个 RoleGroup 集合,该 RoleGroup 集合分别包含 admin 和 VIP 两种用户类别,当用户
为 admin 或 VIP 是,可以通过相应的权限绑定进行不同模板的访问,创建后示例代码如下所示。
<asp:LoginView ID="LoginView1" runat="server">
<RoleGroups>
<asp:RoleGroup Roles="admin">
<ContentTemplate>
这是一个管理员用户可以访问的页面..
</ContentTemplate>
</asp:RoleGroup>
<asp:RoleGroup Roles="vip">
<ContentTemplate>
这是一个 VIP 用户可以访问的页面
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
<LoggedInTemplate>
这是一个登录用户可以访问的页面..
</LoggedInTemplate>
<AnonymousTemplate>
这是一个匿名用户可以访问的页面..
</AnonymousTemplate>
</asp:LoginView>
当有不同身份的用户访问该控件时,控件能够通过用户的身份进行不同模板的呈现,这样就方便
了开发人员对不同身份和权限的用户进行网站应用程序和模板的访问限制了。
注意:当一个用户拥有的身份或权限不在列表的权限中时,该用户会默认访问 LoggedInTemplate
模板,并且无论是 LoggedInTemplate 模板还是 RoleGroup 模板,都不会对匿名用户呈现。
6.1.4 登录状态控件(LoginStatus)
登录状态控件(LoginStatus)用于显式用户验证时的状态,LoginStatus 包括“登录”和“注销”两种状
态,对于 LoginStatus 控件的状态是由相应的 Page 对象的 Request 属性中的 IsAuthenticated 属性进行决
161
评论0
最新资源