2013-02-20 3 views
3

Позвольте мне начать с того, что я использую WebMatrix. Я пытаюсь добавить плагин reCAPTCHA на свой веб-сайт ASP.NET. Я посмотрел документацию quickstart для своего плагина ASP.NET. Вот часть их примера:Как я могу добавить плагин reCAPTCHA ASP.NET в файл Razor (CSHTML)?

<%@ 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> 

Я знаю, что я не нужен «<% Язык @ Page =» VB «%>», но я все еще достаточно новое для Razor, так как бы Я добавляю ссылку на сборку reCAPTCHA и отображаю плагин на своей странице? Сомневаюсь, что я мог бы использовать эту линию для ссылки на сборку:

<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %> 

Кроме того, я могу поместить <asp:???> теги и теги из сборки ReCaptcha в моем CSHTML документе? Будет ли это быть действительным на веб-сайте WebMatrix:

<recaptcha:RecaptchaControl 
    ID="recaptcha" 
    runat="server" 
    Theme="red" 
    PublicKey="your_public_key" 
    PrivateKey="your_private_key" 
    /> 

В основном я спрашиваю, как можно было бы идти о добавлении плагин ReCaptcha к # файла Бритва C.

+0

Возможно, стоит взглянуть на [Отображение reCAPTCHA без плагинов] (https://developers.google.com/recaptcha/docs/display). – MikeSmithDev

+0

или ...подключаемый модуль, предназначенный для MVC (возможно, проще найти тогда веб-формы на самом деле) –

+1

Для MVC вы можете сделать это: http://mvcrecaptcha.codeplex.com/ Но вы используете веб-страницы с Razor, правильно? –

ответ

4

Имеется элемент управления, входящий в состав библиотеки Microsoft.Web.Helpers. Основное использование является @Microsoft.Web.Helpers.ReCaptcha.GetHtml(publicKey: "...")

Client (бритва)

@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"); 
    }    
} 
+0

Как я могу проверить reCAPTCHA с помощью этого метода? –

0

в Web.config

<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> 

в View Folder \ Web.config

<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); 
    } 
+0

Он сказал, что не использует MVC или Webform, а «Web-страницы». Вы отвечаете за MVC. –

2

До сих пор ни одна из этих работ. OP использует WebMatrix и Razer, тогда как примеры выше/ниже для MVC и обычного ASP.NET.

В состав WebMatrix IDE включен пакет NuGet для reCAPTCHA, однако нет инструкций по его использованию.

Edit: Вот инструкции по использованию ReCaptcha с WebMatrix

http://www.asp.net/web-pages/tutorials/security/using-a-catpcha-to-prevent-automated-programs-%28bots%29-from-using-your-aspnet-web-site

В двух словах, вам необходимо открыть NuGet, установите библиотеку MS Webhelper и ReCaptcha. Затем добавьте/отредактируйте _AppStart.cshtml в соответствии с рекомендациями и проверьте код примера на странице.

 Смежные вопросы

  • Нет связанных вопросов^_^