首先让我说我正在使用WebMatrix。我正在尝试将一个reCAPTCHA插件添加到我的ASP.NET网站。我查看了他们的ASP.NET插件的quickstart文档。以下是他们的例子的一部分:
<%@ Page Language="VB" %>
<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>
<script runat="server">
Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs)
If Page.IsValid Then
lblResult.Text = "You Got It!"
lblResult.ForeColor = Drawing.Color.Green
Else
lblResult.Text = "Incorrect"
lblResult.ForeColor = Drawing.Color.Red
End If
End Sub
</script>
<html>
<body>
<form runat="server">
<asp:Label Visible=false ID="lblResult" runat="server" />
<recaptcha:RecaptchaControl
ID="recaptcha"
runat="server"
Theme="red"
PublicKey="your_public_key"
PrivateKey="your_private_key"
/>
<!-- ... -->
</form>
</body>
</html>
我知道我不需要“&lt;%@ Page Language =”VB“%&gt;”,但我仍然是Razor的新手,所以我如何添加对reCAPTCHA程序集的引用和并在我的页面中显示插件?我怀疑我可以将这一行用于装配参考:
<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>
另外,我可以在我的CSHTML文档中放置来自reCAPTCHA程序集的<asp:???>
标记和标记吗?这在WebMatrix网站上是否有效:
<recaptcha:RecaptchaControl
ID="recaptcha"
runat="server"
Theme="red"
PublicKey="your_public_key"
PrivateKey="your_private_key"
/>
基本上我问的是如何将一个reCAPTCHA插件添加到Razor C#文件中。
答案 0 :(得分:4)
Microsoft.Web.Helpers库中包含一个控件。基本用法为@Microsoft.Web.Helpers.ReCaptcha.GetHtml(publicKey: "...")
客户(剃刀)
@using (Html.BeginForm("Captcha", "Home", FormMethod.Post))
{
@Microsoft.Web.Helpers.ReCaptcha.GetHtml(publicKey: "...")
<input type="submit" value="submit"/>
}
在服务器端
public ActionResult Captcha()
{
var valid = Microsoft.Web.Helpers.ReCaptcha.Validate(privateKey: "...");
if (valid)
{
return RedirectToAction("Contact");
}
else
{
ModelState.AddModelError("Captcha", "Bad input in captcha");
return View("Index");
}
}
答案 1 :(得分:2)
到目前为止,这些都没有奏效。 OP使用WebMatrix和Razer,而上面/下面的示例适用于MVC和常规ASP.NET。
WebMatrix IDE在NuGet中包含一个用于reCAPTCHA的软件包,但没有关于如何使用它的说明。
编辑:以下是将reCAPTCHA与WebMatrix一起使用的说明
简而言之,您需要打开NuGet,安装MS Webhelper库和reCAPTCHA。然后按照建议添加/编辑_AppStart.cshtml并检查页面上的示例代码。
答案 2 :(得分:0)
<appSettings>
<add key="webpages:Version" value="1.0.0.0"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
<add key="ReCaptchaPrivateKey" value="Your private key here" />
<add key="ReCaptchaPublicKey" value="Your public key here" />
</appSettings>
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="Recaptcha"/>
</namespaces>
在cshtml中
把它放在顶部
@using Recaptcha;
将其放在您要显示的位置
<div class="editor-label">
Are you a human?
</div>
<div class="editor-field">
@Html.DisplayFor(model => model.recap_errorRaise)
@Html.Raw(Html.GenerateCaptcha("captcha", "red"))
@Html.ValidationMessage("captcha")
</div>
在控制器
中 [HttpPost]
[RecaptchaControlMvc.CaptchaValidator]
public ActionResult Index(Home home, bool captchaValid, string captchaErrorMessage)
{
if (ModelState.IsValid)
{
if (captchaValid)
{
//return RedirectToAction("AnswerSecurityQuestion", new { username = model.Username });
return View(home);
}
ModelState.AddModelError("", captchaErrorMessage);
home.recap_errorRaise = captchaErrorMessage;
}
return View(home);
}
答案 3 :(得分:0)
从https://developers.google.com/recaptcha/docs/language中将语言值放入资源文件中。 示例(@ Resource.CaptchaLanguage value ='en')
<script src="https://www.google.com/recaptcha/api.js?hl=@Resource.CaptchaLanguage"></script>