/// <summary> /// Renders the recaptcha HTML in an MVC view. It is an extension method to the <see cref="System.Web.Mvc.HtmlHelper"/> class. /// </summary> /// <param name="htmlHelper">The <see cref="System.Web.Mvc.HtmlHelper"/> object to which the extension is added.</param> /// <param name="siteKey">Sets the site key of recaptcha.</param> /// <param name="language">Sets the language of recaptcha. If no language is specified, the language of the current UI culture will be used.</param> /// <param name="useSsl">Sets the value to the UseSsl property.</param> /// <param name="apiVersion">Determines the version of the reCAPTCHA API.</param> /// <returns>Returns an instance of the IHtmlString type.</returns> public static IHtmlContent RecaptchaApiScript( this IHtmlHelper htmlHelper, string siteKey = null, string language = null, RecaptchaSslBehavior?useSsl = null, string apiVersion = null) { var config = RecaptchaConfigurationManager.GetConfiguration(); string ver; if (!string.IsNullOrEmpty(apiVersion)) { ver = apiVersion; } else { ver = config.ApiVersion; } if (ver == null || ver == "2") { var rHtmlHelper = new Recaptcha2HtmlHelper(siteKey ?? config.SiteKey); return(new HtmlString(rHtmlHelper.CreateApiScripttHtml(language ?? config.Language, useSsl != null ? (RecaptchaSslBehavior)useSsl : config.UseSsl))); } else { throw new InvalidOperationException("The API version is either invalid or not supported."); } }
/// <summary> /// Redners the HTML output. This method is automatically called by ASP.NET during the rendering process. /// </summary> /// <param name="output">The output object to which the method will write HTML to.</param> /// <exception cref="InvalidOperationException">The exception is thrown if the public key is not set.</exception> protected override void RenderContents(HtmlTextWriter output) { if (this.DesignMode) { output.Write("<p>Recaptcha API Script Control</p>"); } else { if (ApiVersion == null || ApiVersion == "2") { var htmlHelper = new Recaptcha2HtmlHelper(this.SiteKey); output.Write(htmlHelper.CreateApiScripttHtml(Language, UseSsl)); } else { throw new InvalidOperationException("The API version is either invalid or not supported."); } } }