I am creating an MVC application. I am getting a null value in variable when I fetching data from database.
Here is my change password view code
@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>
}
Here is my Home controller code.
Problem I am facing - var userDetail is returning null and when i checked and debug my code using breakpoint my login.Email is not fetching email from database and it is returning null.
public ActionResult Changepassword(tblUser login)
{
using (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);
if (userDetail != null)
{
userDetail.Password = login.NewPassword;
db.SaveChanges();
ViewBag.Message = "Record Inserted Successfully!";
}
else
{
ViewBag.Message = "Password not Updated!";
}
}
}
return View(login);
}
tblUser loginmake a hidden field for the email..@Html.EditorFor(m => m.Email)in your view and change the controller tovar detail = db.tblUsers.Where(x => x.Password == login.Password && x.Email == login.Email).FirstOrDefault();- the second query is not required