0

私がやろうとしていること:コントロールを介してユーザーを作成しておりCreateUserWizard、パスワードをランダムに生成された英数字のパスワードに設定しようとしています。パスワードTextBoxはユーザー (管理者) には見えません。

私の試みた解決策:パスワードを見つけてTextBox値を変更しようとしましたが、値が設定されません。私のコードは次のとおりです。

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

パスワード コントロールが見つかり、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 文字未満であり、英数字以外の文字を少なくとも 1 つ含める必要があります」というパスワード失敗メッセージが表示され続けたため、そうではないと思いました。

私の間違いは、メッセージの両方の条件が真であると想定していたことです。そうではありませんでした。このメッセージは、いずれかの条件が真の場合に表示されます。

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 に答える