2012-06-21 335 views
0

因爲我是一個asp新手,我試圖將名稱作爲輸入,試圖將該名稱放入列表中,然後檢查列表以查找匹配項。我將此作爲基本知識來記錄日誌,我將在稍後嘗試實施。我有以下代碼:在asp頁面上登錄驗證

我做了一類這樣的:

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

兩個按鈕事件如下:

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"; 

    } 

} 

當我試圖插入,其工作很好,但是當點擊顯示任何錯誤消息的登錄按鈕時,例如「對象引用未設置爲對象的實例」。

+0

感謝您的迴應,我會通過頁面生命週期理解asp.net的一些非常基本的概念,我認爲這會幫助我做一些更成熟的編碼。 –

回答

0

當您按下登錄按鈕時,您處於與按下第一個按鈕不同的範圍,所以列表不會被初始化(每按一次ASP按鈕,您都會得到一個新狀態:網絡旨在無國籍)。

爲什麼不使用asp:login控件?

0

你的代碼並不完全是它應該是的。你最好去搜索一些關於如何在ASP.NET中登錄的例子。

0

每次點擊都是一個新的HTTP請求。在第一個請求中初始化的列表與另一個請求中的列表不同,因爲每個請求都將使用它自己的Page對象實例。

你需要閱讀&瞭解ASP.net頁面的生命週期:http://msdn.microsoft.com/en-us/library/ms178472.aspx

+0

說實話,我並沒有真正在asp.net工作,我曾在一些winform應用中工作。我會看到這篇文章。謝謝。 –

0

使protected屬性來存儲登錄

它不應該的名單看起來是這樣的:

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

您可以使用Session以及ViewState。這會讓你的名單在每次你做出PostBack時都不會消失。

然後在事件btnLogIn

創建List<Login> list = LoginStore;

然後讓你的代碼的其餘部分。

0

click on here

爲什麼去for循環,使用會話變量在Global.asax中,嘗試googlin你可以找到許多例子..