C# ASP.Net核心在网页的一部分实现了recaptcha 2

C# ASP.Net核心在网页的一部分实现了recaptcha 2,c#,asp.net-core,asp.net-core-mvc,recaptcha,C#,Asp.net Core,Asp.net Core Mvc,Recaptcha,我正在尝试将reCaptcha v2添加到我的ASP.Net核心网站。网站上大约有30多个页面,每个页面在内容的不同点上都有一个“联系”表单部分 本节我有一个局部模型和一个视图模型,包括在每个视图中: 部分呼叫: @Html.Partial("_GetInTouchSection", GetInTouchViewModel) public class GetInTouchViewModel { [Required(ErrorMessage="Please enter your name

我正在尝试将reCaptcha v2添加到我的ASP.Net核心网站。网站上大约有30多个页面,每个页面在内容的不同点上都有一个“联系”表单部分

本节我有一个局部模型和一个视图模型,包括在每个视图中:

部分呼叫:

@Html.Partial("_GetInTouchSection", GetInTouchViewModel)
public class GetInTouchViewModel
{
    [Required(ErrorMessage="Please enter your name")]
    public string Name { get; set; }
    [Required(ErrorMessage = "Please enter your company name")]
    public string CompanyName { get; set; }
    [Required(ErrorMessage = "Please enter your telephone number")]
    public string TelephoneNumber { get; set; }
    [Required(ErrorMessage = "Please enter your email address")]
    public string EmailAddress { get; set; }
    [Required(ErrorMessage = "Please enter your message")]
    public string Message { get; set; }
}
查看模型:

@Html.Partial("_GetInTouchSection", GetInTouchViewModel)
public class GetInTouchViewModel
{
    [Required(ErrorMessage="Please enter your name")]
    public string Name { get; set; }
    [Required(ErrorMessage = "Please enter your company name")]
    public string CompanyName { get; set; }
    [Required(ErrorMessage = "Please enter your telephone number")]
    public string TelephoneNumber { get; set; }
    [Required(ErrorMessage = "Please enter your email address")]
    public string EmailAddress { get; set; }
    [Required(ErrorMessage = "Please enter your message")]
    public string Message { get; set; }
}
我发现很多文章都在讨论如何在独立页面(如反馈或联系我们)上实现这一点,并将其发回视图的控制器操作,如果reCaptcha请求失败,则将用户返回视图

目前,我的每个页面的控制器操作仅为HttpGet

我不希望每个视图都有一个post操作,而是希望有一个控制器和操作可以将表单发布到其中,但我不确定这是否可行

    [ValidateRecaptcha]
    [HttpPost]
    public ViewResult PostGetInTouchForm(GetInTouchViewModel vm)
    {
        _logger.LogInformation("Starting PostGetInTouchForm routine");
        if (ModelState.IsValid)
        {
            _getInTouchService.SendGetInTouch(vm);
            ...redirect to thankyou page
        } else {
           ...what to do here? If I redirect, I lose the data posted
        }
        return View(vm);
    }
我不知道验证失败时该怎么办,也不知道如何将用户输入的内容带回GetInTouch部分?或者,我可以用AJAX做些什么来保存表单的发布,直到reCaptcha被验证,还是我必须为每个视图创建一个post操作,并且必须重复检查和电子邮件代码30多次

感谢您的帮助