2012-04-23 8 views
1

MVC3で "ChangePassword"ビューを構築するのに手伝ってもらえますか?私がしようとしたものをここでMVC 3で "ChangePassword"を表示

ProfileTeacherController.cs

public ViewResult ChangePassword(int id) 
    { 
     var user = User.Identity.Name; 
     int inter = int.Parse(user); 

     var teachers = from t in db.Teachers 
         where t.AffiliationNumber == inter 
         select t; 

     Teacher teacher = new Teacher(); 
     foreach (var teach in teachers) 
     { 
      teacher = teach; 
     } 

     return View(teacher); 
    } 

    [HttpPost] 
    public ActionResult ChangePassword(Teacher teacher) 
    { 
     if (ModelState.IsValid) 
     { 
      // How can I compare the two fields password in my view ? 
      db.Entry(teacher).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Edit", "ProfileTeacher", new { id = teacher.TennisClubID }); 
     } 
     return View(teacher); 
    } 

ここのChangePassword(ビュー)だから、

@model TennisOnline.Models.Teacher 
@{ 
ViewBag.Title = "ChangePassword"; 
} 

<h2>Changement du mot de passe</h2> 

@using (Html.BeginForm()) { 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend></legend> 

    <div class="editor-label"> 
     @Html.Label("Enter the new password") 
    </div> 
    <div class="editor-field"> 
     @Html.PasswordFor(model => model.Pin, new { value = Model.Pin }) 
    </div> 

    <div class="editor-label"> 
     @Html.Label("Confirm your password") 
    </div> 
    <div class="editor-field"> 
     @Html.Password("ConfirmPassword") 
    </div> 


    <p> 
     <input type="submit" value="Save" /> 
    </p> 
</fieldset> 
} 

、どのように私ができます私のコントローラで2つのPA sswordsは同じですか、お願いしますか?事前

答えて

3

のおかげで、私は、ビューモデルの使用をお勧めします:

public class TeacherViewModel 
{ 
    ... 

    [Compare("ConfirmPassword")] 
    public string Password { get; set; } 

    public string ConfirmPassword { get; set; } 
} 

今、あなたのビューは、ビューモデルともあなたのポストの措置を講じています。

あなたのGETアクションに加えて、私はその用途を見ていないforeachループを書いているようです。

[Authorize] 
public ViewResult ChangePassword(int id) 
{ 
    var user = User.Identity.Name; 
    int inter = int.Parse(user); 
    var teacher = db.Teachers.SingleOrDefault(t => t.AffiliationNumber == inter); 
    return View(teacher); 
} 
+0

ありがとうそして、 "foreachループ"についてのヒントについても、 – Razor

4

さらに、2つのパスワードがCompare属性で同じでない場合に、メッセージを追加することができます。

[Compare("NewPassword", ErrorMessage = "The new password and confirm password do not match.")] 
関連する問題