我的项目有重置密码功能。我正在使用令牌向用户发送链接。点击链接后,我需要进入HomeController
并启动ResetPassword
方法。我的问题是我不知道在哪里放置ResetPassword
部分视图(即模态),无论我把它放在哪里,它都会在我打开登录页面时引入。
在用户电子邮件中考虑此链接:
http://...myurlaction=resetpassword&userid=5&email=test@yahoo.com&token=1234564
当他们点击它时我需要采用这种方法:
首先得到方法:
[HttpGet]
[Route("resetpassword")]
[AllowAnonymous]
public ActionResult ResetPassword(ResetPasswordRequest resetPasswordRequest)
{
//check if Token is valid show the view
return PartialView();
}
发帖后,转到POST
方法:
[HttpPost]
[Route("resetpassword")]
public ActionResult ResetPassword(ResetPasswordView resetPasswordView)
{
return PartialView();
}
这是部分观点:
<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="jdoe@example.com"></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>
我的问题是,我不知道我必须拥有@Html.Partial("Login")
的位置
因为我所拥有的任何地方都显示重置密码视图,即使我不需要显示它。
答案 0 :(得分:1)
根据您的说明,我猜您使用PartialView
因为您想重复使用Login
页面的代码。基本上,您的Login
页面有两种状态:一种用于登录,另一种用于重置密码。要知道哪个州已被激活,您应该在Login
页面中添加一个标记,例如:
@if (Viewbag["state"] == "Login") {
Html.RenderPartial("Login");
} else {
Html.RenderPartial("resetpassword");
}
然后,您要做的是在Viewbag
和LoginController
上设置ResetPasswordController
的相应值,如下所示:
[HttpGet]
[Route("resetpassword")]
[AllowAnonymous]
public ActionResult ResetPassword(ResetPasswordRequest resetPasswordRequest)
{
//check if Token is valid show the view
Viewbag["state"] = "ResetPassword";
return YourLoginPage();
}
答案 1 :(得分:0)
如果我正确理解了您的问题,则部分视图应位于应用程序的Views \ Home文件夹中,因为您从主控制器调用部分视图。作为建议,也许您可以将您的操作方法移动到帐户控制器,严格来说,重置密码更像是一个&#34;帐户&#34;功能而不是驻留在家庭控制器中的功能。在这种情况下,您的部分视图将添加到Views \ Account。