2017-04-04 1 views
0

Nach der Dokumentation here konnte ich das Tool installieren, fügen Sie es in meinem Konto Controller:Wie füge ich reCAPTCHA meinem registerviewmodel hinzu?

using reCAPTCHA.MVC; 
public async Task<ActionResult> Register(RegisterViewModel model, bool captchaValid) 
{ 
    if (ModelState.IsValid) 
    { 
     //do some stuff  
     if (captchaValid) 
     { 
      //do some stuff 
     } 
    } 
} 

und fügen Sie es meiner Ansicht nach:

<div class="form-group"> 
    @Html.Recaptcha() 
    <div class="col-md-10"> 
     @Html.ValidationMessage("ReCaptcha") 
    </div> 
</div> 

Allerdings ist die Dokumentation nicht sagen, Sie, wie es zu den RegisterViewModel hinzuzufügen, die Mine zur Zeit wie folgt aussieht:

public class RegisterViewModel 
{ 
    [Required] 
    [Display(Name = "User Name")] 
    public string UserName { get; set; } 

    [Required] 
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
    [DataType(DataType.Password)] 
    [Display(Name = "Password")] 
    public string Password { get; set; } 

    [DataType(DataType.Password)] 
    [Display(Name = "Confirm password")] 
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
    public string ConfirmPassword { get; set; } 

    public bool Recapcha { get; set; } 
} 

Mit dieser gibt mir th e Fehler: System.Web.Mvc.HtmlHelper (ProjectName.Models.RegisterViewModel) 'enthält keine Definition für' Recaptcha 'und keine Erweiterungsmethode' Recaptcha ', die ein erstes Argument vom Typ' System.Web.Mvc.HtmlHelper 'akzeptiert (ProjectName.Models.RegisterViewModel) 'könnte gefunden werden (fehlt eine Verwendungs-Direktive oder eine Assembly-Referenz?)

Antwort

1

Sie nicht. Diese Ausnahme besagt, dass die Erweiterungsmethode Html.Recaptcha, die Sie verwenden möchten, nicht existiert. Entweder ist es der falsche Name für die Erweiterung, die von reCAPTCHA.MVC bereitgestellt wird, oder wahrscheinlicher, die Ansicht hat keinen Verweis auf diesen Namespace. Sie können, dass entweder korrigieren:

  1. eine using-Anweisung an die Spitze Ihrer Ansicht hinzufügen:

    @using reCAPTCHA.MVC 
    
  2. bearbeiten die Web.config Datei in Ihrem Views Verzeichnis (nicht Ihr Haupt Web.config). Suchen Sie den Abschnitt wie:

    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
        <namespaces> 
        <add namespace="System.Web.Mvc" /> 
        <add namespace="System.Web.Mvc.Ajax" /> 
        <add namespace="System.Web.Mvc.Html" /> 
        <add namespace="System.Web.Optimization" /> 
        <add namespace="System.Web.Routing" /> 
        </namespaces> 
    </pages> 
    

    Und fügen Sie einen zusätzlichen Namespace Referenz dort:

    <add namespace="reCAPTCHA.MVC" /> 
    
+0

Dieser arbeitete wie ein Charme, wenn die öffentlichen und privaten Codes in https hinzugefügt werden: // Entwickler. google.com/recaptcha/docs/faq – Skullomania

Verwandte Themen