0

さようなら。統合されたユーザーテキストボックスとログインボタンを備えたログインコントロールがあります。この小さなテストを行って、それがどのように機能するかを確認しました。驚くべきことに、これを行った後:

protected void LoginButton_Click(object sender, EventArgs e)
{
            TextBox userTextBox = (TextBox)Login1.FindControl("UserName");
            userTextBox.Text = "You pressed the button";
}

userTextBox は「ボタンを押しました」に変わりません。なんで?ありがとう。アンナ

編集: 確かに、ここにマークアップがあります (そのほとんどは、ログイン コントロールを追加するときにシステムによって自動的に生成されます)。ログインに統合されたボタン LoginButton に気付くでしょう。

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

<asp:Panel ID="searchPanel" runat="server" DefaultButton="login1$LoginButton">
    <asp:Login ID="Login1" runat="server" 
    FailureText="Logarea a esuat. Reincercati!" LoginButtonText="Logati-va!" 
    PasswordLabelText="Parola:" 
    PasswordRequiredErrorMessage="Trebuie sa introduceti parola." 
    RememberMeText="Tine-ma minte!" TitleText="Logare" 
    UserNameLabelText="Nume de utilizator:" 
    UserNameRequiredErrorMessage="Trebuie sa introduceti numele de utilizator.">
        <LayoutTemplate>
            <table border="0" cellpadding="1" cellspacing="0" 
                style="border-collapse:collapse;">
                <tr>
                    <td>
                        <table border="0" cellpadding="0">
                            <tr>
                                <td align="center" colspan="2">
                                    Logare</td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Nume 
                                    de utilizator:</asp:Label>
                                </td>
                                .........
                            <tr>
                                <td align="right" colspan="2">
                                    <asp:Button ID="LoginButton" runat="server" CommandName="Login" 
                                        Text="Logati-va!" ValidationGroup="Login1" />
                                </td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
        </LayoutTemplate>
</asp:Login>
</asp:Panel>
</asp:Content>

コード ビハインドは次のようになります。

namespace Cinemax
{
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

                        //userTextBox.Focus(); // this sets the focus on the username textbox when the page loads
            this.Title = CinemaxConfiguration.SiteName + ": Login";


        }

        protected void LoginButton_Click(object sender, EventArgs e)
        {
            TextBox userTextBox = (TextBox)Login1.FindControl("UserName");
            TextBox userPassword = (TextBox)Login1.FindControl("Password");

            //Button loginBtn = (Button)Login1.FindControl("LoginButton");
            userTextBox.Text = "You pressed me";

            if (User1.ConnAttempt(userTextBox.Text, userPassword.Text) == 1)
            {
                Session["User"] = userTextBox.Text;
                Response.Redirect("Catalog.aspx");
            }
            else
            {

            }
        }
    }
}
4

6 に答える 6

1

私は間違っているかもしれませんが、実際にそれをコントロールにバインドし直したことはありますか。

ログインコントロールから初期化される新しいテキストボックスを作成しています。

次に、そのテキストボックスのテキストを設定しますが、コントロール自体にバインドして戻すとは思いません。

于 2012-06-18T09:49:19.553 に答える
1

TestBox は ASP サーバー コントロールで、runat=Server ですか?

于 2012-06-18T09:47:33.237 に答える
0

アプリケーションをデバッグする場合、テキストが設定されていることを示していますか?

また、Page_Loadメソッドにテキストボックスの値を設定するものがありますか?あなたは物事を入れるべきです

if(!IsPostBack)
{
userTextBox.Text = ""
}

声明

于 2012-06-18T09:49:01.890 に答える
0

コントロールが runat=server であり、コントロールをイベントにバインドしているかどうかを確認します

    this.LoginButton.Click += new System.EventHandler(this.LoginButton_Click);
于 2012-06-18T09:50:37.227 に答える
0

ログイン コントロールで、userTextBoxinPage_Loadまたはその他のイベントの値を設定しているかどうかを確認します。その値は別の場所から設定されているようです。

于 2012-06-18T09:51:33.327 に答える
0

フォームにバインドする必要があります。. .

于 2012-06-18T10:08:02.310 に答える