MVC Identity通过电子邮件从登录到注册/忘记密码页面

时间:2014-12-04 11:57:13

标签: jquery asp.net-mvc asp.net-identity

在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社区到目前为止给我带来了很多价值。我想分享一下。如果您对此有任何建议,我愿意学会以更好的方式做到这一点。

0 个答案:

没有答案