MVC身份,发送电子邮件确认额外的参数
问题描述:
我使用电子邮件确认开发一个MVC应用程序使用此行MVC身份,发送电子邮件确认额外的参数
await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
,但我想在这种方法
public virtual Task SendEmailAsync(TKey userId, string subject, string body);
是发送额外的参数部分
public class UserManager<TUser, TKey> : IDisposable
如何覆盖或创建接受另一个参数的扩展。 ?
答
简单 - 你不需要。相反,将方法包装在自己的方法中,该方法接收额外的参数,并对其执行任何操作。
我假设你想使用'额外参数'来形成你的电子邮件正文或主题。
private void MyMethod(... whatever ...)
{
// TODO: Use whatever
await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking here");
}
答
通常在使用MVC从User<TUser, TKey>
像“的UserManager” inherets一些其他类,但它应该在任何情况下工作。
所以它会是这样的:
public static class UserManagerExtension
{
public static Task SendEmailAsync(this UserManager manager,
TKey userId, string subject, string body, string extraParameter)
{
//Do something with parameter
return manager.SendEmailAsync(userId, subject, body);
}
}
所以,如果从User<TUser, TKey>
的UserManager inherets,只需用你的(string
默认情况下)代替TKey
型,它应该工作。
是的,这很容易,谢谢你的答案,但我想获得该参数时,电子邮件。被确认。所以我可以更新其他表格中的字段。但是我只想在电子邮件被确认时更新表格 – user6272884
然后您会被问到错误的问题。如果你想在确认后更新信息,你需要将它存储在某个地方:Temp Data []或链接本身。将所有信息放入URL中,除非它包含密码,并修改确认电子邮件操作以使用标记读取它。 – Ssheverdin