将电子邮件传递给 ResendEmailConfirmation 模型/视图 - 身份

Posted

技术标签:

【中文标题】将电子邮件传递给 ResendEmailConfirmation 模型/视图 - 身份【英文标题】:Pass email to ResendEmailConfirmation model/view - Identity 【发布时间】:2021-05-21 08:34:38 【问题描述】:

我正在尝试将用户的电子邮件从注册页面传递给 Identity 的 ResendEmailConfirmation.cshtml 类,以便它显示在电子邮件输入框中的视图中。

注册页面 - 将用户重定向到重新发送电子邮件确认页面的链接

<a asp-area="Identity" asp-page="/Account/resendemailconfirmation" asp-route-email="@Model.Input.Email" class="resend-confirm-email-submit">Resend confirmation email</a>

ResendEmailConfirmation.cshtml - 相关部分

        public ResendEmailConfirmationModel(UserManager<IdentityUser> userManager, IEmailSender emailSender)
        
            _userManager = userManager;
            _emailSender = emailSender;
        

        [BindProperty]
        public InputModel Input  get; set; 

        public class InputModel
        
            [Required]
            [EmailAddress]
            public string Email  get; set; 
        

        public void OnGet(string email)
        
            // My attempt
            InputModel inputModel = new InputModel();
            inputModel.Email = email;
        

ResendEmailConfirmation 视图 - 电子邮件输入框

        <form method="post">
            <div asp-validation-summary="All" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="Input.Email" class="register-heading-style"></label>
                <input asp-for="Input.Email" class="form-control" />
                <span asp-validation-for="Input.Email" class="text-danger"></span>
            </div>
            @*<button type="submit" class="btn btn-primary">Resend</button>*@
            <button type="submit" class="register-submit"><span>Resend</span></button>
        </form>

谢谢

【问题讨论】:

【参考方案1】:

您应该使用这种方式在 OnGet() 中定义 Input:

Register.cshtml.cs获取邮件(你没有展示这部分代码,所以我直接定义值):

public void OnGet()
    
        Input =new InputModel()   
         
            Email = "asd@asd.com"
        ;
    

然后ResendEmailConfirmation.cshtml.cs显示从注册页面传递的电子邮件:

public void OnGet(string email)
    
        Input = new InputModel()  //you get value from Input.Eamil in view, so you should define Input, not inputmodel
        
            Email = email
        ;            
    

您不必更改剃刀视图页面。

结果:

【讨论】:

以上是关于将电子邮件传递给 ResendEmailConfirmation 模型/视图 - 身份的主要内容,如果未能解决你的问题,请参考以下文章

使用 laravel 将电子邮件传递给父用户

将 textview 的内容传递给邮件正文

如何将变量传递给电子表格函数?

如何将一组选中/未选中的复选框值传递给 PHP 电子邮件生成器?

将复选框值传递给 javascript 和 PHP 邮件

Qualtrics - 将响应传递给 Javascript 以进行 API 调用