C# ASP.Net核心在网页的一部分实现了recaptcha 2
我正在尝试将reCaptcha v2添加到我的ASP.Net核心网站。网站上大约有30多个页面,每个页面在内容的不同点上都有一个“联系”表单部分 本节我有一个局部模型和一个视图模型,包括在每个视图中: 部分呼叫: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
@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多次
感谢您的帮助