0

私はaspの初心者なので、名前を入力として取り、その名前をリストに入れようとしてから、リストをチェックして一致するものを見つけようとしています。ログイン手順を念頭に置いた基本としてこれを行っています。これは後で実装しようとします。次のコードがあります。

私はこのようなクラスを作りました:

 public class Login
{
    public string name { get; set; }
}

2 つのボタン イベントは次のとおりです。

List<Login> list;
protected void Button1_Click(object sender, EventArgs e)
{
    list = new List<Login>(){ 
        new Login { name = TextBox1.Text },
        new Login { name = "Badhon"}
    };

    Label1.Text = "Inserted";

}


protected void btnLogIn_Click(object sender, EventArgs e)
{


    foreach (var s in list)
    {
        if (s.name == TextBox1.Text)
        {
            Label1.Text = "Found";
            break;
        }
        else
            Label1.Text = "Not Found";

    }

}

挿入しようとすると正常に動作しますが、ログインボタンをクリックすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」などのエラーメッセージが表示されます。

4

5 に答える 5

0

クリックするたびに新しいHTTPリクエストが送信されます。最初のリクエストで初期化されたリストは、他のリクエストのリストと同じではありません。これは、各リクエストがPageオブジェクトの独自のインスタンスを使用するためです。

ASP.netページのライフサイクルを読んで理解する必要があります:http://msdn.microsoft.com/en-us/library/ms178472.aspx

于 2012-06-21T09:07:48.800 に答える
0

ここをクリックしてください

なぜforloopを実行し、Global.asaxでセッション変数を使用し、多くの例を見つけることができるgooglinを試してください。

于 2012-06-21T10:02:24.717 に答える
0

ログインボタンを押すと、最初のボタンを押したときとはスコープが異なるため、リストは初期化されません(ASPボタンを押すたびに、新しい状態が表示されます。Webはステートレスになるように設計されています)。

asp:loginコントロールを使用してみませんか?

于 2012-06-21T09:06:18.623 に答える
0

あなたのコードは、それが想定されているものとは正確には異なります。ASP.NETでログインを処理する方法に関する(さまざまな)例をいくつか検索することをお勧めします。

于 2012-06-21T09:06:27.920 に答える
0

protectedログインのリストを保存するプロパティを作成します

次のようになります。

protected List<Login> LoginStore
{
     get{ return ViewState["store"] =! null ? (List<Login>)ViewState["store"] : new List<Login>; }
     set{ ViewState["store"]=value; }
}

SessionViewState と同様に使用できます。作成するたびにリストが消えないようにしますPostBack

その後、イベントでbtnLogIn

作成List<Login> list = LoginStore;

次に、残りのコードを作成します。

于 2012-06-21T09:12:08.170 に答える