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型,它应该工作。

+0

是的,这很容易,谢谢你的答案,但我想获得该参数时,电子邮件。被确认。所以我可以更新其他表格中的字段。但是我只想在电子邮件被确认时更新表格 – user6272884

+0

然后您会被问到错误的问题。如果你想在确认后更新信息,你需要将它存储在某个地方:Temp Data []或链接本身。将所有信息放入URL中,除非它包含密码,并修改确认电子邮件操作以使用标记读取它。 – Ssheverdin