`
isiqi
  • 浏览: 16050548 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ASP.NET - 如何:自定义 ASP.NET CreateUserWizard 控件

阅读更多

可以使用 CreateUserWizardStep CompleteWizardStep 模板来自定义 CreateUserWizard 控件的内容。通过指定模板的内容,您可以指定自己的自定义用户界面 (UI),该用户界面包括 CreateUserWizard 控件用于收集有关新用户的信息的控件,以及您指定的其他控件。此外,由于 CreateUserWizard 控件继承自 Wizard 类,因此可以向 CreateUserWizard 控件添加您自己的自定义步骤。

一、自定义 CreateUserWizard 步骤

1.1、按照下面的语法将一个 CreateUserWizard 控件放在页上。

<asp:CreateUserWizard ID="CreateUserWizard1" Runat="server">

<WizardSteps>

<asp:CreateUserWizardStep runat="server">

</asp:CreateUserWizardStep>

<asp:CompleteWizardStep runat="server">

</asp:CompleteWizardStep>

</WizardSteps>

</asp:CreateUserWizard>

1.2、若要自定义用户帐户创建步骤,请在 <asp:CreateUserWizardStep> 元素中创建一个 <ContentTemplate> 元素。在该模板中,添加标记和控件来定义收集所需用户信息的用户界面布局和内容。下面的代码示例演示一个 CreateUserStep 属性,该属性包括允许用户指定其他选项的 CheckBox 控件。

<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">

<ContentTemplate>

<table border="0" style="font-size: 100%; font-family: Verdana">

<tr>

<td align="center" colspan="2" style="font-weight: bold; color: white; background-color: #5d7b9d">

Sign Up for Your New Account</td>

</tr>

<tr>

<td align="right">

<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">

User Name:</asp:Label></td>

<td>

<asp:TextBox ID="UserName" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"

ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>

</td>

</tr>

<tr>

<td align="right">

<asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">

Password:</asp:Label></td>

<td>

<asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox>

<asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"

ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>

</td>

</tr>

<tr>

<td align="right">

<asp:Label ID="ConfirmPasswordLabel" runat="server" AssociatedControlID="ConfirmPassword">

Confirm Password:</asp:Label></td>

<td>

<asp:TextBox ID="ConfirmPassword" runat="server" TextMode="Password"></asp:TextBox>

<asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server" ControlToValidate="ConfirmPassword"

ErrorMessage="Confirm Password is required." ToolTip="Confirm Password is required."

ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>

</td>

</tr>

<tr>

<td align="right">

<asp:Label ID="EmailLabel" runat="server" AssociatedControlID="Email">

E-mail:</asp:Label></td>

<td>

<asp:TextBox ID="Email" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email"

ErrorMessage="E-mail is required." ToolTip="E-mail is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>

</td>

</tr>

<tr>

<td align="right">

<asp:Label ID="QuestionLabel" runat="server" AssociatedControlID="Question">

Security Question:</asp:Label></td>

<td>

<asp:TextBox ID="Question" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="QuestionRequired" runat="server" ControlToValidate="Question"

ErrorMessage="Security question is required." ToolTip="Security question is required."

ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>

</td>

</tr>

<tr>

<td align="right">

<asp:Label ID="AnswerLabel" runat="server" AssociatedControlID="Answer">

Security Answer:</asp:Label></td>

<td>

<asp:TextBox ID="Answer" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="AnswerRequired" runat="server" ControlToValidate="Answer"

ErrorMessage="Security answer is required." ToolTip="Security answer is required."

ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>

</td>

</tr>

<tr>

<td align="center" colspan="2">

<asp:CompareValidator ID="PasswordCompare" runat="server" ControlToCompare="Password"

ControlToValidate="ConfirmPassword" Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match."

ValidationGroup="CreateUserWizard1"></asp:CompareValidator>

</td>

</tr>

<tr>

<td align="center" colspan="2" style="color: red">

<asp:Literal ID="ErrorMessage" runat="server" EnableViewState="False"></asp:Literal>

</td>

</tr>

</table>

<asp:CheckBox ID="SubscribeCheckBox" runat="server" Checked="True" Text="Send me a monthly newsletter." />

<br />

<asp:CheckBox ID="ShareInfoCheckBox" runat="server" Checked="True" Text="Share my information with partner sites." />

</ContentTemplate>

</asp:CreateUserWizardStep>

1.3、若要自定义完成步骤,请在 <asp:CompleteWizardStep> 元素中创建一个 <ContentTemplate> 元素。在该模板中,添加标记和控件来定义用于显示确认消息及使用户定位以继续(可选)的用户界面的布局和内容。下面的代码示例演示一个 CompleteStep 属性,该属性引用前一个示例中的 CheckBox 控件。

<asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server">

<ContentTemplate>

<table border="0" style="font-size: 100%; font-family: Verdana" id="TABLE1" >

<tr>

<td align="center" colspan="2" style="font-weight: bold; color: white; background-color: #5d7b9d; height: 18px;">

Complete</td>

</tr>

<tr>

<td>

Your account has been successfully created.<br />

<br />

<asp:Label ID="SubscribeLabel" runat="server" Text="You have elected to receive our monthly newsletter."></asp:Label><br />

<br />

<asp:Label ID="ShareInfoLabel" runat="server" Text="You have elected to share your information with partner sites."></asp:Label></td>

</tr>

<tr>

<td align="right" colspan="2">

&nbsp;<asp:Button ID="ContinueButton" runat="server" BackColor="#FFFBFF" BorderColor="#CCCCCC"

BorderStyle="Solid" BorderWidth="1px" CausesValidation="False" CommandName="Continue"

Font-Names="Verdana" ForeColor="#284775" Text="Continue" ValidationGroup="CreateUserWizard1" />

</td>

</tr>

</table>

</ContentTemplate>

</asp:CompleteWizardStep>

1.4、添加代码以引用其他控件。例如,通过处理 CreatingUser 事件,可以在创建新的用户帐户之前输入代码以收集、验证和修改信息。 下面的代码示例演示引用前面示例中的 CheckBox 控件的 CreatedUser 事件的处理程序,并将它们添加到新创建的用户帐户的 Comment 属性。您将需要向页上的 CreateUserWizard 控件添加一个 OnCreatedUser 属性,该控件引用 CreatedUser 事件的处理程序(例如 OnCreatedUser="CreateUserWizard1_CreatedUser"。)

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)

{

// Determine the checkbox values.

CheckBox subscribeCheckBox =

(CheckBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("SubscribeCheckBox");

CheckBox shareInfoCheckBox =

(CheckBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ShareInfoCheckBox");

TextBox userNameTextBox =

(TextBox)CreateUserWizardStep1.ContentTemplateContainer.FindControl("UserName");

MembershipUser user = Membership.GetUser(userNameTextBox.Text);

user.Comment = "Subscribe=" + subscribeCheckBox.Checked.ToString() + "&" +

"ShareInfo=" + shareInfoCheckBox.Checked.ToString();

Membership.UpdateUser(user);

// Show or hide the labels based on the checkbox values.

Label subscribeLabel =

(Label)CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("SubscribeLabel");

Label shareInfoLabel =

(Label)CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("ShareInfoLabel");

subscribeLabel.Visible = subscribeCheckBox.Checked;

shareInfoLabel.Visible = shareInfoCheckBox.Checked;

}

二、添加向导步骤

2.1、向 CreateUserWizard 控件的 <WizardSteps> 节添加 <asp:WizardStep> 元素。在您的自定义 CreateUserWizard 控件将使用的附加向导步骤中包括任何控件和标记。

例如,下面的代码示例演示要添加在 CreateUserWizard 控件(该控件包含供用户输入用户名的文本框控件)的 CreateUserStep 之前的步骤。将检查用户名以确保该名称在成员资格数据库中不存在。

<asp:WizardStep ID="CreateUserWizardStep0" runat="server">

<table border="0" style="font-size: 100%; font-family: Verdana" id="TABLE1" >

<tr>

<td align="center" colspan="2" style="font-weight: bold; color: white; background-color: #5d7b9d">

Select an Account Name</td>

</tr>

<tr>

<td>

<asp:Label ID="AccountNameLabel" runat="server" AssociatedControlID="SearchAccount" >

Account Name:</asp:Label>

<asp:TextBox ID="SearchAccount" runat="server"></asp:TextBox><br />

<asp:Label ID="SearchAccountMessage" runat="server" ForeColor="red" />

</td>

</tr>

</table>

</asp:WizardStep>

2.2、添加向导步骤的代码。可以处理 Wizard 控件的 NextButtonClick 事件以执行您的代码。CurrentStepIndex 属性值通过步骤索引号(从代表第一个步骤的 0 开始)来指示哪个附加向导步骤引发了 NextButtonClick 事件。 下面的代码示例演示 NextButtonClick 事件的处理程序,该处理程序使用在前一个代码示例的向导步骤的 TextBox 控件中输入的用户名,并验证该用户名,以确保它不是空白的并且在成员资格数据库中不存在。您将需要向页上的 CreateUserWizard 控件添加一个 OnNextButtonClick 属性,该控件引用 NextButtonClick 事件的处理程序(例如 OnNextButtonClick="CreateUserWizard1_NextButtonClick"。)

private bool UserExists(string username)

{

if (Membership.GetUser(username) != null) { return true; }

return false;

}

protected void CreateUserWizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)

{

if (e.CurrentStepIndex == 0)

{

if (SearchAccount.Text.Trim() == "" || UserExists(SearchAccount.Text))

{

SearchAccountMessage.Text = "That account already exists. Please select an different account name.";

e.Cancel = true;

}

else

{

TextBox userName =

(TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName");

userName.Text = SearchAccount.Text;

SearchAccountMessage.Text = "";

e.Cancel = false;

}

}

}

三、示例

下面的代码示例演示一个 CreateUserWizard 控件,该控件具有为两个基本步骤(CreateUserStep CompleteStep)以及一个添加在 CreateUserStep 之前的附加向导步骤定义的模板。

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)

{

// Determine the checkbox values.

CheckBox subscribeCheckBox =

(CheckBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("SubscribeCheckBox");

CheckBox shareInfoCheckBox =

(CheckBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ShareInfoCheckBox");

TextBox userNameTextBox =

(TextBox)CreateUserWizardStep1.ContentTemplateContainer.FindControl("UserName");

MembershipUser user = Membership.GetUser(userNameTextBox.Text);

user.Comment = "Subscribe=" + subscribeCheckBox.Checked.ToString() + "&" +

"ShareInfo=" + shareInfoCheckBox.Checked.ToString();

Membership.UpdateUser(user);

// Show or hide the labels based on the checkbox values.

Label subscribeLabel =

(Label)CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("SubscribeLabel");

Label shareInfoLabel =

(Label)CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("ShareInfoLabel");

subscribeLabel.Visible = subscribeCheckBox.Checked;

分享到:
评论

相关推荐

    asp.net 图片验证 例子

    在后台,CreateUserWizard控件使用ASP.NET Membership来创建新用户。 CreateUserWizard控件支持大量的属性(由于属性实在太多,因此不再一一列举),通过这些属性我们可以修改该控件的外观和行为。

    [ASP.NET.4揭秘(卷2)].(.ASP.NET.4.Unleashed).谭振林等

    全书分为两卷,本卷主要介绍高级的ASP.NET4知识,内容包括安全、创建ASP.NET应用程序、创建自定义控件和客户端AJAX等。《ASP.NET 4揭秘(卷2)》适合各层次ASP.NET开发人员阅读。 编辑推荐 《ASP.NET 4揭秘(卷2)》:...

    ASP.NET 3.5 开发大全11-15

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    ASP.NET 3.5 开发大全1-5

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    ASP.NET3.5从入门到精通

    1.1.5 ASP.NET 3.5 新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET 应用程序需框架 1.2.1 什么是.NET 应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装...

    ASP.NET 3.5 开发大全

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    书中还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软...

    ASP.NET 3.5 开发大全word课件

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    ASP.NET登陆控件最全最详细介绍

    ASP.NET登录控件概述Login控件LoginView 控件LoginStatus 控件LoginName 控件PasswordRecovery 控件CreateUserWizard 控件ChangePassword 控件 Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全...

    ASP.NET4高级程序设计(第4版) 3/3

    书中还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软...

    ASP.NET3.5揭秘(卷2)part1

     1.3 使用CreateUserWizard控件  1.4 使用LoginStatus控件  1.5 使用LoginName控件  1.6 使用ChangePassword控件  1.7 使用PasswordRecovery控件  1.8 使用LoginView控件  1.9 小结  第2章 使用ASP...

    ASP.NET 3.5 揭秘(卷2).part2

     1.3 使用CreateUserWizard控件  1.4 使用LoginStatus控件  1.5 使用LoginName控件  1.6 使用ChangePassword控件  1.7 使用PasswordRecovery控件  1.8 使用LoginView控件  1.9 小结  第2章 使用ASP...

    用ASP.NET 2.0做的网上商店

    要实现这一功能也比较麻烦.但自从asp.net 2.0以后,提供了一套用户登陆注册控件.使用非常方便....这里以CreateUserWizard 为例说明注册用户向导的...&lt;asp:CreateUserWizard ID="CreateUserWizardControl" runat="server"&gt;

    asp.net高级Web服务器控件

    实例 CreateUserWizard控件创建新用户登录 6.4 日期与时间 实例 通过Calendar控件查看指定日期新闻 实例 制作万年历 实例 日历备忘录 6.5 用WebPart实现个性化 实例 创建简单的WebPart页 实例 在WebPart中加入用户...

    ASPNET35开发大全第一章

    1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...

    ASP.NET.4揭秘 卷2

    n13 使用CreateUserWizard控件 n131 配置自定义用户表单字段 n132 发送已创建用户电子邮件通知 n133 用户自动重定向来源页面 n134 自动生成密码 n135 在CreateUserWizard控件中使用模板 n136 在CreateUserWizard控件...

    Asp.net2.0用户注册控件

    其中利用Asp.net2.0中的CreateUserWizard、Login、LoginName、LoginView、MemberShip等控件进行用户注册、登录、修改密码、角色管理等,其中主要靠控件实现各种功能,后台代码非常少。普通用户登录:(1)将Defatult...

    ASP.NET2.0MemberShipUser.doc

    membership简介 2.membership在sql server中的设置 3.配置web.config 4.创建用户CreateUserWizard控件 5.用户登录login控件 6.显示当前用户的名称LoginName控件 7.检测用户的身份验证状态的LoginStatus控

Global site tag (gtag.js) - Google Analytics