2017-05-25 77 views
0

我使用電子郵件確認開發一個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 

如何覆蓋或創建接受另一個參數的擴展。 ?

回答

1

簡單 - 你不需要。相反,將方法包裝在自己的方法中,該方法接收額外的參數,並對其執行任何操作。

我假設你想使用'額外參數'來形成你的電子郵件正文或主題。

private void MyMethod(... whatever ...) 
{ 
    // TODO: Use whatever 
    await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking here"); 
} 
0

通常在使用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

相關問題