ASP.Net MVC Recaptcha и строгий Doctype - PullRequest
       7

ASP.Net MVC Recaptcha и строгий Doctype

1 голос
/ 03 октября 2010

Я использую этот этот подход Recaptcha в моем проекте MVC, однако он не подходит для Strict 1.0 DOCTYPE.

Может кто-нибудь помочь?

Спасибо

Ответы [ 2 ]

1 голос
/ 25 января 2011

Я бы порекомендовал библиотеку Microsoft Web Helpers через ссылку на пакет NuGet.

Вот запись в блоге: http://www.dotnetcurry.com/ShowArticle.aspx?ID=611

0 голосов
/ 03 декабря 2010

Создайте свой собственный контроль.Как вы можете видеть в методе RenderContents RecaptchaControl, он использует iframe.Iframe не соответствует строгому стандарту HTML, поэтому вы должны использовать тег объекта HTML.

protected override void RenderContents(HtmlTextWriter output)
{
 output.AddAttribute(HtmlTextWriterAttribute.Type, "text/javascript");
 output.RenderBeginTag(HtmlTextWriterTag.Script);
 output.Indent++;
 output.WriteLine("var RecaptchaOptions = {");
 output.Indent++;
 output.WriteLine("theme : '{0}',", this.theme ?? string.Empty);
 if (this.customThemeWidget != null)
 {
  output.WriteLine("custom_theme_widget : '{0}',", this.customThemeWidget);
 }
 output.WriteLine("tabindex : {0}", this.TabIndex);
 output.Indent--;
 output.WriteLine("};");
 output.Indent--;
 output.RenderEndTag();
 output.AddAttribute(HtmlTextWriterAttribute.Type, "text/javascript");
 output.AddAttribute(HtmlTextWriterAttribute.Src, this.GenerateChallengeUrl(false), false);
 output.RenderBeginTag(HtmlTextWriterTag.Script);
 output.RenderEndTag();
 output.RenderBeginTag(HtmlTextWriterTag.Noscript);
 output.Indent++;
 output.AddAttribute(HtmlTextWriterAttribute.Src, this.GenerateChallengeUrl(true), false);
 output.AddAttribute(HtmlTextWriterAttribute.Width, "500");
 output.AddAttribute(HtmlTextWriterAttribute.Height, "300");
 output.AddAttribute("frameborder", "0");
 output.RenderBeginTag(HtmlTextWriterTag.Iframe); // Change this to object HTML tag
 output.RenderEndTag();
 output.WriteBreak();
 output.AddAttribute(HtmlTextWriterAttribute.Name, "recaptcha_challenge_field");
 output.AddAttribute(HtmlTextWriterAttribute.Rows, "3");
 output.AddAttribute(HtmlTextWriterAttribute.Cols, "40");
 output.RenderBeginTag(HtmlTextWriterTag.Textarea);
 output.RenderEndTag();
 output.AddAttribute(HtmlTextWriterAttribute.Name, "recaptcha_response_field");
 output.AddAttribute(HtmlTextWriterAttribute.Value, "manual_challenge");
 output.AddAttribute(HtmlTextWriterAttribute.Type, "hidden");
 output.RenderBeginTag(HtmlTextWriterTag.Input);
 output.RenderEndTag();
 output.Indent--;
 output.RenderEndTag();
}
...