我正在使用一个CreateUserWizard控件,我想定制它以满足我的需求。
我的问题是:是否可以使用CreateUserWizardStep控件将电子邮件文本框移动到另一步,然后是CreateUserWizard步骤?
我想要实现的是从步骤1到拥有UserName、密码和ConfirmPassword,在步骤2中实现电子邮件、自定义ConfirmEmail、Security质询/SecurityAnswer和其他信息。
我知道如何添加向导步骤,但是如果我移动了任何默认文本框,我就会得到关于CreateUserWizard步骤中缺少字段的错误。
发布于 2012-10-29 13:11:22
发完这个问题后,我开始尝试一些我没有想过的替代方案。比如在CreateUserWizard步骤的顶部添加一个UserNameTextBox、PasswordTextBox和ConfirmPasswordTextBox。
CreateUserWizard步骤包含一个隐藏的UserName、密码和ConfirmPassword文本框,我在ActiveStepChanged事件上设置了这些值。该步骤还包含创建用户sich作为问题和答案的其他必需字段。
这符合我的要求,我是一个快乐的程序员:)
发布于 2012-10-29 12:49:32
我建议你用这种结构进行测试。
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" >
<WizardSteps>
<asp:CreateUserWizardStep runat="server">
.....
</asp:CreateUserWizardStep>
<asp:WizardStep runat="server">
...
</asp:WizardStep>
<asp:CompleteWizardStep runat="server" />
</WizardSteps>
</asp:CreateUserWizard>控件使用ValidationGroup属性进行验证,以便在需要时激活验证
链接:http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.button.validationgroup.aspx
发布于 2014-02-16 10:28:00
这里我展示了如何定制创建用户向导&我使用的是Microsoft Visual Studio Express 2013 For Web
在你的register.aspx页面中
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" OnCreatedUser="CreateUserWizard1_CreatedUser" CreateUserButtonText="Submit">
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep" runat="server">
<ContentTemplate>
<table>
<tr>
<td>User name:
</td>
<td>
<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>Password:
</td>
<td>
<asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox></td>
</tr>
<tr>
<td>Confirm Password:</td>
<td><asp:TextBox ID="ConfirmPassword" runat="server" TextMode="Password"></asp:TextBox>
</td>
</tr>
<tr class="form-group">
<td>E-mail:
</td>
<td >
<asp:TextBox ID="Email" runat="server" TextMode="Email"></asp:TextBox>
</td>
</tr>
<tr>
<td>First Name:
</td>
<td>
<asp:TextBox ID="FirstName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>Last Name:
</td>
<td>
<asp:TextBox ID="LastName" runat="server"></asp:TextBox>
</td>
</tr>
</table>
</ContentTemplate>
</asp:CreateUserWizardStep>
<asp:CompleteWizardStep runat="server"></asp:CompleteWizardStep>
</WizardSteps>
</asp:CreateUserWizard>而您的CreateUserWizard1_CreatedUser文件后面的Register.aspx.cs代码使用以下代码
var manager = new UserManager();
var user = new ApplicationUser() { UserName = CreateUserWizard1.UserName };
IdentityResult result = manager.Create(user, CreateUserWizard1.Password);
// Get the UserId of the just-added user
MembershipUser newUser = Membership.GetUser(CreateUserWizard1.UserName);
Guid newUserId = (Guid)newUser.ProviderUserKey;
//Get Profile Data Entered by user in Create User Wizard control
String FirstName = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("FirstName")).Text;
String LastName = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("LastName")).Text;
// Insert a new record into User_Profile
// Get your Connection String from the web.config. MembershipConnectionString is the name I have in my web.config
string connectionString = ConfigurationManager.ConnectionStrings["yourConnectionstring"].ConnectionString;
string insertSql = "INSERT INTO yourDBTableName(dbTcolumn,dbTcolumn, dbTcolumn) values(@dbTcolumn, @dbTcolumn)";
using (SqlConnection myConnection = new SqlConnection(connectionString))
{
IdentityHelper.SignIn(manager, user, isPersistent: false);
myConnection.Open();
SqlCommand myCommand = new SqlCommand(insertSql, myConnection);
myCommand.Parameters.AddWithValue("@dbTcolumn", FirstName);
myCommand.Parameters.AddWithValue("@dbTcolumn", LastName);
myCommand.Parameters.AddWithValue("@dbTcolumn", newUserId);
myCommand.ExecuteNonQuery();
myConnection.Close();
}我不是using RequiredFieldValidator。如果您想要使用,只需使用Register.aspx页面以下部分
<asp:RequiredFieldValidator Display="Dynamic" ID="RequiredFieldValidator4" runat="server"
ControlToValidate="FirstName" ErrorMessage="The user name field is required." ValidationGroup="CreateUserWizard1"></asp:RequiredFieldValidator>并将CreateUserWizard1_CreatedUser代码添加到Register.aspx.cs中的if (result.Succeeded)后面
我希望这是帮助您定制您的创建用户向导。
谢谢
https://stackoverflow.com/questions/13121660
复制相似问题