0

我正在尝试做的事情:我正在通过CreateUserWizard控件创建用户,并且正在尝试将密码设置为随机生成的字母数字密码。密码TextBox对用户(管理员)是不可见的。

我尝试的解决方案:我找到密码TextBox并尝试更改值,但不会设置该值。我的代码如下:

CreateUserWizard1_CreatingUser(object sender, LoginCancelEventArgs e) 
{
    TextBox Password = (TextBox)CreateUserWizardStep1.ContentTemplateContainer.FindControl("Password");
    Password.Text = "randomAlphaNumericPassword";
}

找到 Password 控件,该Text属性似乎已设置,但一旦离开事件方法,它就会忘记新值并返回到原来的值。我知道这是一个实际的参考,但不明白为什么该值不会设置。

这是我的asp标记:

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"
    EnableViewState="False" LoginCreatedUser="False" 
    oncreateduser="CreateUserWizard1_CreatedUser"
    oncreatinguser="CreateUserWizard1_CreatingUser" 
    CompleteSuccessText="A new account has been successfully created!" 
    ContinueDestinationPageUrl="~/Accounts.aspx" 
    CreateUserButtonText="Create Account" 
    AutoGeneratePassword="False">
    <WizardSteps>
        <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
            <ContentTemplate>
            ...
                <asp:TextBox ID="Password" runat="server" Visible="false"></asp:TextBox>
            </ContentTemplate>
        </asp:CreateUserWizardStep>
        ...
    </WizardSteps>
4

2 回答 2

0

我想到了。该值设置正确,但我认为这不是因为我不断收到密码失败消息,“密码少于 7 个字符,并且必须包含至少一个非字母数字字符”,即使我的密码长于 7 个字符。

我的错误是假设消息中的两个条件都为真。此情况并非如此。如果任一条件为真,则会显示此消息。

我将 web.config 文件更改为最低要求 0 个非字母数字字符,之后一切正常。我之前没有指定任何内容,因此它默认为至少 1 个非字母数字字符。

如果我必须赞扬某人,那将是 MStodd询问控件的验证代码。这让我更仔细地看待这个问题。

感谢大家的帮助。

于 2012-09-14T14:08:26.783 回答
0

在您的页面生命周期的早期是否有一些东西,例如在 Page_Load 上将值设置为默认值?如果是这样,请确保您在以下代码块中执行此操作

if(!IsPostBack)
{
   // set default value
}
于 2012-09-13T22:53:04.690 回答