在MVC中使用提供的身份框架我觉得很烦人,当用户尝试登录,但没有成功(因为用户不存在或密码错误)时,决定去'注册为新用户'或'忘记密码',用户需要重新输入他/她的电子邮件地址。
所以我做了一些小改动。
第1步: 在登录视图中。将html-attribute id添加到register / forgotpassword链接:
@Html.ActionLink("Register as a new user", "Register", null, new {@id = "RegisterLink" }) |
@Html.ActionLink("Forgot your password?", "ForgotPassword", null, new { @id = "ForgotPasswordLink" })
第2步:将JQuery脚本添加到登录视图。
<script type="text/javascript">
$(document).ready(function () {
var $BaseRegisterLink = $('#RegisterLink').attr('href');
var $BaseForgotPasswordLink = $('#ForgotPasswordLink').attr('href');
var $InitialEmail = $('#Email').val();
if ($InitialEmail != "")
{
$('#RegisterLink').attr('href', $BaseRegisterLink + "?Email=" + $InitialEmail);
$('#ForgotPasswordLink').attr('href', $BaseForgotPasswordLink + "?Email=" + $InitialEmail);
}
$('#Email').on('input', function () {
$('#RegisterLink').attr('href', $BaseRegisterLink + "?Email=" + $(this).val());
$('#ForgotPasswordLink').attr('href', $BaseForgotPasswordLink + "?Email=" + $(this).val());
});
});
第3步:在AccountController.Register / Forgotpassword GetMethod中添加了一个参数。
public ActionResult Register(String Email)
{
if (Email != null) return View(new AppUserCreateVM() {Email = Email } );
return View();
}
public ActionResult ForgotPassword(String Email)
{
if (Email != null) return View(new ForgotPasswordViewModel() { Email = Email });
return View();
}
因为StackOverflow社区到目前为止给我带来了很多价值。我想分享一下。如果您对此有任何建议,我愿意学会以更好的方式做到这一点。