Recaptcha не работает с ajax и частичными представлениями
Я использую Recaptcha в моем веб-приложении MVC4. Он работал правильно, когда он был встроен в форму, но когда я переместил @Html.Raw(Html.GenerateCaptchaHelper()) в частичное представление и попытался вызвать это частичное представление через запрос ajax, это не сработало!
Код расширения:
public static string GenerateCaptchaHelper(this HtmlHelper helper)
{
var captchaControl = new Recaptcha.RecaptchaControl
{
ID = "recaptcha",
Theme = "clean",
PublicKey = ************,
PrivateKey = **********************,
Language = "En"
};
var htmlWriter = new HtmlTextWriter(new StringWriter());
captchaControl.RenderControl(htmlWriter);
return htmlWriter.InnerWriter.ToString();
}
мое частичное представление имеет такой код: <p>@Html.Raw(Html.GenerateCaptchaHelper())</p>
и внутри моего контроллера
public PartialViewResult Captcha()
{
return PartialView();
}
и внутри моего основного вида:
@using (Html.BeginForm("Login", "Account", new { returnUrl = ViewData["ReturnUrl"] }, FormMethod.Post,null))
{
@Html.AntiForgeryToken()
<form role="form">
<div class="form-group">
<label>@Html.LabelFor(m => m.Email)</label><br />
@Html.TextBoxFor(m => m.Email, null, new { @class = "form-control", autocomplete = "off" })
</div>
<div class="form-group">
<label>@Html.LabelFor(m => m.Password)</label><br />
@Html.PasswordFor(m => m.Password, new { @class = "form-control", autocomplete = "off" })
</div>
<div id="captchaView" class="form-group">
</div>
<button type="submit">Login</button>
</div>
</div>
</form>
}
и JavaScript это:
$.ajax({
url: '/Account/Captcha',
type: 'GET',
success: function(data) {
$('#captchaView').html(data);
}
});
Не могли бы вы помочь мне выяснить, почему?