まず、私は MVC を初めて使用し、MVC 4 のパスワード回復機能を実装しようとしています。ここに投稿されたこの手法を使用してこれを実装しています: ASP .NET MVC2 でパスワード回復を実装するための C# サンプル コードの検索場所
仕組みは理解できましたが、今実装しようとしているヘルパー クラスがありません。私はクラスについて話している: NotificationsHelper.SendPasswordRetrieval(model.Email, this.ControllerContext);
コントローラーのRetrievePasswordアクション コントローラーには、パラメーターPasswordRetrievalModel modelがあります。これは db に接続し、テーマの中でいくつかのプロパティを実装するクラス モデルであると思いますが、これはEmailという文字列プロパティです。これは正しいです?
よりも、NotificationsHelper.SendPasswordRetrieval(model.Email, this.ControllerContext); static クラスは、2 つのパラメーターを持つこの静的メソッドSendPasswordRetrievlaを実装します: model.Emailは、PasswordRetrievalModel モデル クラスの文字列プロパティであるため、これがメールの送信先のユーザー メールになります。2 番目のパラメーターよりもthis.ControllerContextです。SendPasswordRetrievalメソッドに送信される値に含まれるこのパラメーターのポイントは何ですか?
次のようにクラスを実装するよりも:
public static class NotificationsHelper
{
public static bool SendPasswordRetrieval(string emailAddress, ControllerContext ctx)
{
try
{
StringBuilder emailMessage = new StringBuilder();
emailMessage.Append("<br />");
emailMessage.Append("Hello,");
emailMessage.Append("You have requested a password recovery.");
emailMessage.Append("<br />");
emailMessage.Append("Please click the link below to change your password: <br />");
emailMessage.Append("<br />");
emailMessage.Append(string.Format("http://www.example.com/Account/Validate?email={0}&token={1}", emailAddress, "**345982374532453435345**"));
emailMessage.Append("<br />");
MailMessage email = new MailMessage();
email.From = new MailAddress("noreplay@example.com");
email.To.Add(new MailAddress(emailAddress));
email.Subject = "domain.com Password Recovery";
email.Body = emailMessage.ToString();
email.IsBodyHtml = true;
SmtpClient smtpServer = new SmtpClient();
smtpServer.Host = "smtp.gmail.com";
smtpServer.Port = 587;
smtpServer.Credentials = new NetworkCredential("username", "password");
smtpServer.EnableSsl = true;
smtpServer.Send(email);
return true;
}
catch (Exception e)
{
Trace.WriteLine(String.Format("Failure to send email to {0}.", emailAddress));
return false;
}
}
}
上記のコードでは、URL がフォーマットされている行をリストしましたが、@agrcian が提供したコードを使用してトークンをそこに移動するにはどうすればよいですか? トークンは 2 番目のパラメーターControllerContextから来ていますか? はいの場合、どうすればそこから取得できますか?