/// <summary> /// Renders the reCaptcha HTML control. /// </summary> /// <param name="htmlHelper"><c>HtmlHelper</c> instance.</param> /// <param name="htmlAttributes">List of HTML attributes.</param> /// <param name="parameters"><c>ReCaptchaParameters</c> object.</param> /// <returns>Returns the reCaptcha HTML control.</returns> public static MvcHtmlString ReCaptcha(this HtmlHelper htmlHelper, RenderParameters parameters, IDictionary <string, object> htmlAttributes) { var builder = new TagBuilder("div"); if (parameters != null) { builder.MergeAttributes(parameters.ToDictionary <RenderParameters, string, object>()); } if (htmlAttributes != null) { builder.MergeAttributes(htmlAttributes); } string result; if (!builder.Attributes.TryGetValue("class", out result)) { result = "g-recaptcha"; builder.AddCssClass(result); } if (!result.Contains("g-recaptcha")) { builder.AddCssClass("g-recaptcha"); } return(builder.ToMvcHtmlString(TagRenderMode.Normal)); }
/// <summary> /// Gets the callback script. /// </summary> /// <param name="callback">Name of callback function.</param> /// <param name="elementId">Id of the placeholder element.</param> /// <param name="parameters"><c>RenderParameters</c> instance.</param> /// <returns>Returns the callback script.</returns> private static string GetCallbackScript(string callback, string elementId, RenderParameters parameters) { if (String.IsNullOrWhiteSpace(callback)) { throw new ArgumentNullException("callback"); } if (String.IsNullOrWhiteSpace(elementId)) { throw new ArgumentNullException("elementId"); } var serialised = parameters == null ? null : JsonConvert.SerializeObject(parameters.ToDictionary <RenderParameters, string, object>()) .Replace("\"data-", "\""); var sb = new StringBuilder(); sb.AppendLine(String.Format("var {0} = function() {{", callback)); sb.AppendLine(String.Format("grecaptcha.render(\"{0}\", {1});", elementId, serialised)); sb.AppendLine("};"); return(sb.ToString()); }