Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象引用未设置为mvc中对象的实例[空引用异常]_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 对象引用未设置为mvc中对象的实例[空引用异常]

C# 对象引用未设置为mvc中对象的实例[空引用异常],c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在创建一个MVC应用程序。我在更改密码表单功能上收到一个空引用异常错误 我的模型类代码 我的视图(Changepassword.cshtml) 检查你的数据库。它要么在读取之前关闭,要么连接到其他表 在更新密码属性值之前,请确保userDetail对象不为null。当您的FirstOrDefault方法没有找到所传递电子邮件的记录时,它可能返回null。@如果删除FirstOrDefault方法,我也会返回null。否。只需在访问属性之前添加一个空检查(if(userDetail!=null

我正在创建一个MVC应用程序。我在更改密码表单功能上收到一个空引用异常错误

我的模型类代码 我的视图(Changepassword.cshtml)
检查你的数据库。它要么在读取之前关闭,要么连接到其他表

在更新密码属性值之前,请确保
userDetail
对象不为null。当您的
FirstOrDefault
方法没有找到所传递电子邮件的记录时,它可能返回null。@如果删除FirstOrDefault方法,我也会返回null。否。只需在访问属性之前添加一个空检查(
if(userDetail!=null){\\updatepasswordhere}
)。但是你应该找出为什么它没有给你任何结果。可能是您的
登录名。电子邮件
没有您在db表中的有效电子邮件地址。放一个断点并检查变量值。是的,是@Shyju说的。此外,对于模型的
Email
属性,您的视图没有
隐藏对象,因此在您的HttpPost方法中它将始终为空,并且可能是导致所有这些的原因。请解释为什么这样做。bcos的附加if语句。如果它有帮助,请向上投票。这不是我的问题,我为什么需要帮助?在你的答案中总是包含一些解释性的文字;仅仅从一个代码转储就很难判断你的答案是什么。好的,谢谢。我有点忙你缺了一个
其他的
public partial class tblUser
{
    public int Id { get; set; }

    [Required(ErrorMessage = "Please Enter Your Email Id")]
    [EmailAddress(ErrorMessage = "Invalid Email Address")]
    public string Email { get; set; }

    [Required(ErrorMessage = "Please Enter Your Password")]
    [DataType(DataType.Password)]
    [StringLength(18, ErrorMessage = "The password must be atleast 3 characters long", MinimumLength = 3)]
    public string Password { get; set; }

    [Required(ErrorMessage = "Please Enter Your Password")]
    [DataType(DataType.Password)]
    [StringLength(18, ErrorMessage = "The password must be atleast 3 characters long", MinimumLength = 3)]
    public string NewPassword { get; set; }
}
@model MvcWebApplication1.Models.tblUser

<div class="container">
    <div class="row rowspace1">
        <div class="col-sm-12">
            @Html.ActionLink("Log Out", "Login", "Home")
        </div>
    </div>
    <div class="row">
        <div id="CpassTitle">
            <h3>CHANGE PASSWORD</h3>
        </div>
        @using (Html.BeginForm("Changepassword", "Home", FormMethod.Post))
        {
            
                <table class="center">
                    <tr>
                        <td>Old Password</td>
                        <td>
                            @Html.EditorFor(pass => pass.Password)
                        </td>
                        <td>@Html.ValidationMessageFor(pass => pass.Password)</td>
                    </tr>
                    <tr class="rowspace">
                        <td>New Password</td>

                        <td>
                            @Html.EditorFor(pass => pass.NewPassword)
                        </td>
                        <td>@Html.ValidationMessageFor(pass => pass.NewPassword)</td>
                    </tr>
                  
                    <tr class="rowspace">
                        <td colspan="3" id="button">
                            <input type="submit" value="Change Password" /></td>
                    </tr>
                    <tr class="rowspace"><td colspan="3">@ViewBag.Message</td></tr>
                </table>
            
        }

    </div>
</div> 
[HttpPost]
public ActionResult Changepassword(tblUser login)
{
    UserDetailsEntities db = new UserDetailsEntities();
    var detail = db.tblUsers.Where(log => log.Password == login.Password).FirstOrDefault();
    if (detail != null)
    {
        var userDetail = db.tblUsers.FirstOrDefault(c => c.Email == login.Email);
        userDetail.Password = login.NewPassword;
        
        db.SaveChanges();
        ViewBag.Message = "Record Inserted Successfully!";
    }
    else
    {
        ViewBag.Message = "Password not Updated!";
    }
    return View(login);
}
[HttpPost]
public ActionResult Changepassword(tblUser login)
{
    UserDetailsEntities db = new UserDetailsEntities();
    var detail = db.tblUsers.Where(log => log.Password == login.Password).FirstOrDefault();

    // ADDED NULL CHECK HERE
    if (detail != null)
    {
        var userDetail = db.tblUsers.FirstOrDefault(c => c.Email == login.Email);
         if(userDetail !=null)
         {
              userDetail.Password = login.NewPassword;

              db.SaveChanges();
              ViewBag.Message = "Record Inserted Successfully!";
         }
    }
    else
    {
        ViewBag.Message = "Password not Updated!";
    }
    return View(login);
}