当我在登录中输入错误数据时出现 NuLLReferenceException

苏海尔马利克
      public ActionResult LogIn()
    {
        return View();
    }
    [HttpPost]
    public ActionResult LogIn(UserLogins p, UserRecipe u)
    {
        ////var s = context.plate.FirstOrDefault( x => x.Email.Equals(p.Email) && x.Password.Equals(p.Password));
        var details = (from userlist in context.plate
                       where userlist.Email == p.Email && userlist.Password == p.Password
                       select new
                       {
                           userlist.UserID,
                           userlist.Name,
                           userlist.Email
                       });


        if (details != null)
        {
            //    Session["User"] = s;
            Session["User"] = p.Email;
            Session["Name"] = details.FirstOrDefault().Name;
            Session["UserId"] = details.FirstOrDefault().UserID;
            u.UserId = Convert.ToInt32(Session["UserId"]);
            context.SaveChanges();
            TempData["Added"] = "You are successfully Logged in";
            return RedirectToAction("ShowProducts");
        }

        else
        {
            TempData["Added"] = "Invalid Username or password";
            return RedirectToAction("LogIn");
        }
    }

这是我的代码,当我输入错误的数据时,我得到一个空引用异常。当我输入正确的数据时它工作正常。会话 ["UserId"] 上出现空引用异常。

编码Yoshi

您有下面的查询,它永远不会为空。如果在数据库中未找到任何内容,它将返回空列表。

var details = (from userlist in context.plate
                   where userlist.Email == p.Email && userlist.Password == p.Password
                   select new
                   {
                       userlist.UserID,
                       userlist.Name,
                       userlist.Email
                   });

因此,当您检查时if details != null,它将返回 true,因为它不为 null。然而它是空的。因此,当您这样做时:

if (details != null)
{
    Session["Name"] = details.FirstOrDefault().Name;
}

由于details是空的,因此本质FirstOrDefault上将返回null您正在执行此操作:null.Name这就是您收到空引用异常的原因。

使固定

在数据库中搜索目标用户,如果没有找到,请立即离开。如果找到,请执行以下操作:

var target = context.plate.FirstOrDefault(x => x.Email == p.Email && x.Password == p.Password);
if (target == null)
{
    TempData["Added"] = "Invalid Username or password";
    return RedirectToAction("LogIn");
}

// success
Session["User"] = p.Email;
Session["Name"] = target.Name;
Session["UserId"] = target.UserID;
u.UserId = Convert.ToInt32(Session["UserId"]);
context.SaveChanges();
TempData["Added"] = "You are successfully Logged in";
return RedirectToAction("ShowProducts");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

解析XML时出现NullReferenceException

错误:System.NullReferenceException

如何摆脱NullReferenceException错误

动态编译NullReferenceException错误

使用 ViewModel 时的 NullReferenceException

单例中的 NullReferenceException

对象数组中的NullReferenceException

C#中的NullReferenceException

Xamarin MysqlConnector 奇怪的 NullReferenceException 错误

我打电话的EntityManager的NullReferenceException

从ListBox移除时发生NullReferenceException

传递Action时发生NullReferenceException

访问数组时发生NullReferenceException

POST方法中JsonSerializer的NullReferenceException

使用WaitHandle的HttpHandler中的NullReferenceException

Xamarin Firebase连接中的NullReferenceException

View中的System.NullReferenceException

Formsdata.dll中的NullReferenceException

SQL Server 2014中的NullReferenceException

DataGridView 的 GetCachedPen 函数中的 NullReferenceException

使用接口时出现Java NullReferenceException

尝试到达 REST 端点时出现 NullReferenceException

使用razor if语句时出现NullReferenceException

数据表System.NullReferenceException错误

C#中的System.NullReferenceException错误

在DLL中调用Java方法时出现Unity + IKVM / NullReferenceException

在Powershell中按数组对集合进行分组时出现NullReferenceException

在VS2019中安装任何扩展时出现NullReferenceException

Xamarin System.NullReferenceException:“对象引用未设置为对象的实例。” 当我尝试使用 Api Rest 时出现