【问题标题】:How to catch g-recaptcha-response in ASP.NET MVC?如何在 ASP.NET MVC 中捕获 g-recaptcha-response?
【发布时间】:2016-12-16 02:57:23
【问题描述】:

我正在尝试将带有 ReCaptcha 的表单发布到 mvc 控制器。

<div class="g-recaptcha" data-sitekey="some_site_key"></div>

从 chrome 中的网络监视器我可以看到数据被触发

但是我在控制器中接收这些数据时遇到了困难,我尝试使用 viewmodel [Required(AllowEmptyStrings = false, ErrorMessage = "Captcha required")] public string googleCaptcha { get; set; }

但我无法将变量 googleCaptcha 映射到 g-recaptcha-response,是否有允许我这样做的数据属性?

我显然不能命名变量 g-recaptcha-response 因为 c# 不允许这些命名约定

【问题讨论】:

    标签: asp.net-mvc data-binding viewmodel recaptcha


    【解决方案1】:

    有几个示例可以创建自定义 Bind 属性,允许您指定别名,如果您为多个属性设置别名,我会采用这种方式: https://ole.michelsen.dk/blog/bind-a-model-property-to-a-different-named-query-string-field.html

    但是,对于一次性方法,我只需读取提交的值并手动设置我的属性:

    [HttpPost]
    public ActionResult SubmitAction()
    {
        var recaptchaResponse = Request["g-recaptcha-response"];
    
        var myCaptcha = new MyCaptcha();
        myCaptcha.googleCaptcha = recaptchaResponse
    
        //..
    }
    

    【讨论】:

    • 谢谢你最后完全做到了
    猜你喜欢
    • 1970-01-01
    • 2015-08-21
    • 2015-10-05
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2017-08-29
    相关资源
    最近更新 更多