在asp页面上登录验证

时间:2012-06-21 09:03:25

标签: asp.net login

由于我是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";

    }

}

当我尝试插入时,它工作正常,但是当点击登录按钮时显示任何错误消息,例如“对象引用未设置为对象的实例。”

5 个答案:

答案 0 :(得分:0)

当您按下登录按钮时,您在与第一个按钮不同的范围内,因此列表未初始化(每次按ASP按钮都会获得一个新状态:Web设计为无状态)。

为什么不使用asp:login控件?

答案 1 :(得分:0)

您的代码并不完全符合预期。你最好去寻找一些关于如何在ASP.NET中处理登录的例子。

答案 2 :(得分:0)

每次点击都是新的HTTP请求。在第一个请求中初始化的列表与另一个请求中的列表不同,因为每个请求都将使用自己的Page对象实例。

你需要阅读&amp;了解ASP.net页面的生命周期:http://msdn.microsoft.com/en-us/library/ms178472.aspx

答案 3 :(得分: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;

然后制作剩余的代码。

答案 4 :(得分:0)

click on here

为什么要去forloop,在Global.asax中使用会话变量,尝试googlin你可以找到很多例子..