2016-11-04 6 views
0

Ich habe eine Reset-Passwort-Funktionalität für mein Projekt. Ich sende einen Link an den Benutzer mit einem Token. Nachdem sie auf den Link geklickt haben, gehe ich in meine HomeController und starte die ResetPassword Methode. Mein Problem ist, dass ich nicht sicher bin, wo ich die ResetPassword Partial View setzen muss (das ist modal), wo immer ich es hinstelle, bringt es herein, wenn ich die Login-Seite öffne.Wo sollte ich meine Teilansicht setzen

betrachten diesen Link in Benutzer E-Mail:

http://...myurlaction=resetpassword&userid=5&[email protected]&token=1234564

wenn sie darauf klicken muss ich diese Methode gehen:

erste Methode bekam zu erhalten:

[HttpGet] 
[Route("resetpassword")] 
[AllowAnonymous] 
public ActionResult ResetPassword(ResetPasswordRequest resetPasswordRequest) 
{ 
    //check if Token is valid show the view 
    return PartialView(); 
} 

nach dem Post, gehen Sie zu POST Methode:

[HttpPost] 
[Route("resetpassword")] 
public ActionResult ResetPassword(ResetPasswordView resetPasswordView) 
{ 
    return PartialView(); 
} 

und dies ist Teilansicht:

<div id="myModal" class="modal"> 
<div class="modal-content"> 
    <span class="close">x</span> 
    @using (Html.BeginForm("resetpassword", "Home", FormMethod.Post)) 
    { 
     <h5>Reset Your Loan Center Password</h5> 
     <table> 
      <tr><td>Email Address</td><td><input type="email" name="Email" placeholder="[email protected]"></td></tr> 
      <tr><td>Password</td><td><input type="Password" name="Password" placeholder="Create Password"></td></tr> 
      <tr><td>Confirm Password</td><td><input type="Password" name="ConfirmPassword" placeholder="Re-enter Password"></td></tr> 
      <tr><td colspan="2"><input type="submit" value="Reset Password"></td></tr> 
      <tr> 
       <td class="errMessage" colspan="2"> 
        @Html.ValidationSummary(true) 
       </td> 
      </tr> 
     </table> 
    } 
</div> 

Mein Problem ist, dass ich nicht weiß, wo ich muss @Html.Partial("Login") weil überall, wo ich es Zurücksetzen des Passworts Ansicht zeigen, auch wenn ich don Ich muss es nicht zeigen.

+0

Sie POST-Methode erfordert auch '[AllowAnonymous]' - der Benutzer autorisiert wurde noch nicht –

+0

@Stephen Muecke (und sie sollten nicht die gleiche Signatur haben), ist die Sache, dass, nachdem ich werden.Dies ist nur geht: gebe Werte in Sicht ein, aber es geht nicht, um zu bekommen. – Alma

Antwort

1

Basis auf Ihrer Beschreibung, ich denke, dass Sie PartialView verwenden, weil Sie den Code der Login Seite wiederverwenden möchten. Grundsätzlich hat Ihre Login Seite zwei Zustände: einen für die Anmeldung und einen weiteren für das Zurücksetzen des Passworts. Um zu wissen, in welchem ​​Zustand aktiviert ist, sollten Sie eine Flagge in Ihrer Login Seite, so etwas wie:

@if (Viewbag["state"] == "Login") { 
    Html.RenderPartial("Login"); 
} else { 
    Html.RenderPartial("resetpassword"); 
} 

Dann, was Sie tun müssen, festgelegt wird, um den entsprechenden Wert der Viewbag auf LoginController und ResetPasswordController, wie dies

[HttpGet] 
[Route("resetpassword")] 
[AllowAnonymous] 
public ActionResult ResetPassword(ResetPasswordRequest resetPasswordRequest) 
{ 
    //check if Token is valid show the view 
    Viewbag["state"] = "ResetPassword"; 
    return YourLoginPage(); 
} 
0

Wenn ich Ihre Frage richtig verstanden habe, sollte sich die Teilansicht im Ordner Views \ Home der Anwendung befinden, da Sie den Teil von Ihrem Home Controller aufrufen. Als Vorschlag können Sie Ihre Aktionsmethode möglicherweise auf einen Account-Controller verschieben, da das Zurücksetzen eines Passworts genau genommen eher eine "Account" -Funktionalität ist als etwas, das sich in Ihrem Heim-Controller befindet. In diesem Fall wird Ihre Teilansicht zu Views \ Account hinzugefügt.

+0

Ich meine wo ich die @ Html.Partial setzen muss ("resetpassword") – Alma

Verwandte Themen