本帖最后由 黑马_黄开潮 于 2012-12-16 18:14 编辑
ASP.NET不仅提供了常用的基本控件如标签控件、文本框控件等,还提供了高级的Web窗体的控件。这些控件能够轻松实现更多在ASP开发中难以实现的效果。
登录控件
对于目前常用的网站系统而言,登录功能是必不可少的,例如论坛、电子邮箱、在线购物等。登录功能能够让网站准确的验证用户的身份。用户能够访问该网站时,可以注册并登录,登录后的用户还能够注销登录状态以保证用户资料的安全性。ASP.NET就提供了一系列的登录控件方便登录功能的开发。 1 登录控件(Login)
登录控件是一个复合控件,它包含用户名和密码文本框,以及一个询问用户是否希望在下一次访问该页面时记起其身份的复选框。当用户勾选此选项时,下一次用户访问此网站后,将自动进行身份验证。创建一个登录控件代码,系统会自动生成相应的HTML代码,示例代码如下所示。
<asp:Login ID="Login1" runat="server">
</asp:Login>
上述代码则创建了一个登录控件,开发人员可以通过属性的设置更改登录控件的样式等。
开发人员能够使用登录控件执行用户登录操作而无需复杂的代码实现,登录控件常用的属性如下所示。
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:对用户进行用户身份验证失败时引发该事件。
开发人员能够在页面中拖动相应的登录控件实现登录操作,使用登录控件进行登录操作可以直接进行用户的信息的查询而无需复杂的登录实现。
登录名称控件(LoginName)
登录名称控件(LoginName)是一个用来显示已经成功登录的用户的控件。在Web应用程序开发中,开发人员常常需要在页面中通知相应的用户已经登录,如用户在商品网站上进行登录,登录成功后可以在相应的页面中提示“您已登录,您的用户名是XXX”等,这样不仅能够提高用户的友好度,也能够让开发人员在Web应用程序中方便的对用户信息做收集整理。
开发人员能够方便的在应用程序中拖动LoginName控件用于用户名的呈现,拖动到页面中,系统生成的HTML代码如下所示。
<asp:LoginName ID="LoginName1" runat="server" />
上述代码则实现了一个登录名称控件,开发人员能够将该控件放置在页面中的任何位置进行页面呈现,当用户登录后,该控件能够获取用户的相应信息并呈现用户名在控件中。
注意:LoginName控件只能够在<body>标记内的<form>标记中使用,该控件不能够使用于<title>、<style>等标记中。
在LoginName控件中,最常用的属性为FormatString属性,该属性用于格式化用户名输出。在控件的FormatString属性中,“{0}”字符串用于显式用户名,开发人员能够配置相应的字符串进行输出,例如配置成“您好,{0},您已经登录!”,可以在相应的占位符中呈现相应的用户名。
当对LoginName进行格式化规定后,用户名能够被格式化输出,例如当用户soundbbg登录在Web应用后,该控件会呈现“您好,soundbbg,您已登录!”。开发人员只需要通过简单的配置就能够实现复杂的登录显示功能操作的实现。
登录视图控件(LoginView)
在应用程序的开发过程中,通常需要对不同的身份和权限的用户进行不同登录样式的呈现,开发人员可以为用户配置内置对象以呈现不同的页面效果。但是在页面请求时,还需要对用户的身份进行验证。在ASP.NET 2.0之后的版本中,系统提供了LoginView控件用于不同用户权限之间的视图的区分。
在开发一个应用程序时,开发人员希望应用程序能够实现功能当用户在网站中没有登录时,用户看到的视图是没有登录时的视图,包括网站的风格、系统的提示信息等。而当用户登录后,用户看到的视图是登录后的视图,同样包括网站的风格、系统的提示信息等。LoginView控件为开发人员提供了不同权限的用户进行不同视图的查看的功能,开发人员能够拖动LoginView控件在页面中以编辑不同的页面进行开发。
拖动一个LoginView控件在页面中,开发人员能够通过编辑不同的模板进行不同权限的页面的编写,拖动LoginView控件后系统生成的HTML代码如下所示。
<asp:LoginView ID="LoginView1" runat="server">
</asp:LoginView>
上述代码为默认的LoginView控件的代码,开发人员需要通过编写相应的模板以便不同的用户查看不同的页面,在LoginView控件中,包括两个最常用的模板,这两个模板及其作用分别如下所示。
AnonymousTemplate:匿名模板,当用户没有进行登录时,该模板会呈现在匿名用户面前。
LoggedInTemplate:已登录模板,当用户已经登录成功后,该模板会呈现在已经登录的用户面前。
开发人员可以通过编写相应的模板进行页面的呈现,当用户没有登录时,用户可以看见AnonymousTemplate模板中的内容而无法看见LoggedInTemplate模板的内容;而如果用户已经登录,则登录过后的用户能够看见LoggedInTemplate模板的内容而无法看见AnonymousTemplate模板的内容。
在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模板而管理员可以访问管理员模板。
在LoginView控件中,单击RoleGroup集合,可以添加相应的LoginView控件的RoleGroup集合。
当有不同身份的用户访问该控件时,控件能够通过用户的身份进行不同模板的呈现,这样就方便了开发人员对不同身份和权限的用户进行网站应用程序和模板的访问限制了。
注意:当一个用户拥有的身份或权限不在列表的权限中时,该用户会默认访问LoggedInTemplate模板,并且无论是LoggedInTemplate模板还是RoleGroup模板,都不会对匿名用户呈现。
|