不能正常工作密码重置.net mvc2

时间:2017-10-23 21:16:10

标签: c# asp.net-mvc

我有控制器代码来恢复密码,但它不起作用。 将新密码发送到邮件。

   public ActionResult RecuperarPassword() {
        return View();
    }


    [HttpPost]
    public ActionResult RecuperarPassword(String mail)
    {
        using (mensajeriaEntities4 bdmensajeria = new mensajeriaEntities4())
        {
            var i = (from p in bdmensajeria.usuario
                     where  p.mail ==mail
                     select p).FirstOrDefault();

            if (i != null)
            {
                String status = SendPassword(i.contraseña, i.mail, i.login);
                ModelState.AddModelError("", "Por favor revise su correo para iniciar sesión");

            }
            else {
               ModelState.AddModelError("", "Por favor ingrese un correo valido registrado");

            }

            return View();
        }
    }

    public String SendPassword(String contraseña, String mail, String login) {

        try
        {
            MailMessage email = new MailMessage();
            email.To.Add(mail);
            email.From = new MailAddress("ivesandrey@gmail.com");
            email.Subject = "Recuperar contraseña para su cuenta" + mail;
            String userMessage = "";

            userMessage = userMessage + "<br/><b> Login:</b>" + mail;
            userMessage = userMessage + "<br/><b> contraseña:>/b>" + contraseña;

            String Body = "Hola" + login + ",<br/><br/>Estos son sus datos de ingreso:<br/><br/>" + userMessage + "<br/><br/>Gracias";
            email.Body = Body;
            email.IsBodyHtml = true;


            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com"; // SMTP Server Address of gmail
            smtp.Port = 587;
            smtp.Credentials = new System.Net.NetworkCredential("ivvesandrey@gmail.com", "contraseña");
            smtp.EnableSsl = true;
            smtp.Send(email);
            return "Por favor verifique su correo para recuperar su contraseña";
        }
        catch
        {
            return "Error";
    }


    }

和视图的代码:

<script>
function Validate() {
    var data = document.getElementById("txtEmail").value;
    if (data == "") {
        alert("Por favor ingrese su email.");
        return false;
    } else {
        return true;
    }
}
</script>
@using (Html.BeginForm("Index", "Forgotpassword"))
{
<div>
    Recuperar Password:@Html.TextBox("mail", "", new { @style =              "width:200px;", @id = "txtEmail" })
    <input type="submit" value="Submit" onclick="javascript: return Validate();"
当我输入无效的无效电子邮件时,

提交按钮无效。 当我输入的电子邮件是数据库时,页面仍然在运行并且不发送邮件。

2 个答案:

答案 0 :(得分:1)

在您的控制器代码中,操作是

RecuperarPassword(String mail)

但在您的表单中,Index控制器上的操作为Forgotpassword

@using (Html.BeginForm("Index", "Forgotpassword"))

他们需要是相同的 - 无论哪个

答案 1 :(得分:0)

这一行:

Html.BeginForm("Index", "Forgotpassword")

意味着您正在尝试调用Index控制器的ForgotPassword方法。您的示例没有Index方法。

根据您的示例,假设您提供控制器名称,这应该会触发您的方法:

Html.BeginForm("RecuperarPassword", "YOUR_CONTROLLER_NAME")

Reference