Your problem lies on the following line:
var userDetail = db.tblUsers.FirstOrDefault(c => c.Email == login.Email);
i suspect you want it to be :
var userDetail = db.tblUsers.FirstOrDefault(c => c.Email == detail.Email);
because login isntance will have Email null as you are not passing that from view as hidden field so it will be null, you are fetching user on the basis of password match right now, and if any row found you are want to pass the emial returned from that instance to use to fetch user details.
Please note that, your way of getting row on the basis of password is not right, as multiple users can have same password con-incidently, so in that case there will be problems, if user 1 is updating his password and user2 also has same password, the password for which user will get updated? Think about that scenario.