【问题标题】:How to use @ReCaptcha with Ajax Form in MVC3?如何在 MVC3 中将 @ReCaptcha 与 Ajax 表单一起使用?
【发布时间】:2012-08-16 23:53:39
【问题描述】:

我正在尝试使用来自Microsoft.Web.Helpers 的 ReCaptcha。如果我加载整个页面,它会正确呈现,但如果我使用 ajax 请求加载页面,它就会消失。

示例(/home/index)

<div id="bla">
    @Ajax.ActionLink("reload with ajax", "index", new AjaxOptions() { UpdateTargetId = "bla" })

    @ReCaptcha.GetHtml(publicKey: "xxx")
</div>

如果我输入/home/index,就会出现验证码。如果我点击按钮reload with ajax,ReCaptcha 就会消失...

  1. 第一次加载页面
  2. reload with ajax被点击,页面内容变为/home/index,也就是说整个页面异步重新加载,验证码消失了

有没有办法解决这个问题或为 MVC 3 提供一个不错的验证码助手?

【问题讨论】:

  • 看看这篇文章有没有帮助stackoverflow.com/q/2524847/273200
  • @Bala 是的,解决方法解决了问题
  • 如果您认为它会帮助他人,请发布您必须做的事情作为答案。

标签: c# asp.net-mvc-3 captcha


【解决方案1】:

我已将助手替换为 javascriptReCaptcha script

<div id="captcha"></div>

<input type="submit" value="Send" />

<script type="text/javascript">
Recaptcha.destroy();
Recaptcha.create("publicKey", "captcha", {});
</script>

而Controller还是一样的

if (ReCaptcha.Validate("privateKey"))
{
}

因此,当它部分加载视图时,它会执行此脚本并每次都正确渲染。

感谢@Bala R 的帮助

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,我发现最快的解决方案是使用上面建议的方法,并在 .net javascript api (@ 987654321@))。

    使用此解决方案,后端验证始终有效。

    这是我使用的代码:

    <script type="text/javascript" language="javascript">
      Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
      function EndRequestHandler(sender, args) {
                if (Recaptcha != null) {
                         Recaptcha.destroy();
                         Recaptcha.create("public_key", "captcha", {});
                      }
                  }
    </script>
    

    我希望这可以帮助某人......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      相关资源
      最近更新 更多