c#停止null引用

本文关键字:引用 null 停止 | 更新日期: 2023-09-27 18:14:27

在程序的登录序列期间,我在admin表

中检查用户是否存在。

如果它们不存在于admin表中,我希望程序停止执行其余的登录序列,并在登录屏幕上更新标签文本,以显示为什么它们不能登录等…

目前标签不随文本更新,这将导致在更改文本之前刷新页面。

我也有其他检查发生在登录期间,可以阻止他们登录。

在这种情况下,确保基于某些检查,每次可以显示不同的标签文本的最佳方法是什么?

谢谢你的帮助

try
{
    conn.Open();
    string checkAdmin = "Select Username from Admins where Username= '" + Session["Username"] + "'";
    SqlCommand adminCheck = new SqlCommand(checkAdmin, conn);
    string admin = adminCheck.ExecuteScalar().ToString();
    conn.Close();
    Session["Admin"] = admin;
}
catch (NullReferenceException)
{
    Session.Abandon();
    Response.Redirect(Request.RawUrl);
    Label3.Text = "blablabla"
}

编辑

好的,我现在已经根据你的评论更新到....

                try
            {
                string checkAdmin = "Select Username from Admins where Username= @User";
                conn.Open();
                SqlCommand adminCheck = new SqlCommand(checkAdmin, conn);
                adminCheck.Parameters.AddWithValue("@User", Session["Username"]);
                var admin = adminCheck.ExecuteScalar();
                conn.Close();
                if (admin != null)
                {
                    Session["Admin"] = admin;

                }
                else 
                {
                    Session["Admin"] = null;
                }
            }
            catch (Exception)
            {
            }

c#停止null引用

Response.Redirect(Request.RawUrl);

这将立即取消当前代码的执行,并转移到该URL(可能是其他代码)。因此,下面改变标签的语句将不会被执行。

从文档(注释部分):

Redirect调用End,完成后抛出ThreadAbortException异常。