2016-05-01 5 views
0

MVCアプリケーションを作成しています。データベースからデータを取得するときに、変数にNULL値が取得されています。ASP.NET MVCでパスワード機能を変更しました(データベースから値を取得できません)

は、ここに私のパスワード変更ビューコード

@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> 

} 

ここでは私のホームコントローラコードがあります。

問題var userDetailがnullを返しています。ブレークポイントを使用してコードをチェックしてデバッグしたときに、login.Emailがデータベースから電子メールを取得せず、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); 
} 
+2

下のコードを確認してください電子メールのために。 – Sachu

+0

そしてあなたは本当に平文(ハッシュされていない)としてあなたのパスワードをデータベースに保存していますか? –

+0

@Sachuあなたはコードで説明することができます....私は非常にMVCとコーディングに新しいです。それは非常に役に立ちます –

答えて

1

その投稿が得るとき、それは常にnullになりますので、割り当てされていません。 ベストプラクティスは、パスワード変更時にも電子メールを要求することです。それは隠しフィールドを作るlogin` tblUser `のようにヌル来るassigned.soされていないモデルの電子メールのためのあなたのビューで あなたのビュー

@using (Html.BeginForm("Changepassword", "Home", FormMethod.Post)) 
    { 
      <table class="center"> 
      <tr> 
        <td>Email</td> 
        <td> 
         @Html.EditorFor(pass => pass.email) 
        </td> 
        <td>@Html.ValidationMessageFor(pass => pass.email)</td> 
       </tr> 
       <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> 

    } 

コントローラ

public ActionResult Changepassword(tblUser login) 
    { 
     using (UserDetailsEntities db = new UserDetailsEntities()) 
     { 
      var detail = db.tblUsers.Where(log => log.Password == login.Password 
      && log.email == login.email).FirstOrDefault(); 
      if (detail != null) 
      { 
        userDetail.Password = login.NewPassword; 

        db.SaveChanges(); 
        ViewBag.Message = "Record Inserted Successfully!"; 

       } 
    else 
       { 
        ViewBag.Message = "Password not Updated!"; 
       } 


     } 

     return View(login); 
    } 
関連する問題