Asp.net mvc 未触发ReCaptcha MVC razor验证消息
我是MVC的新手,在这个问题上有点困惑 昨晚我在我的Umbraco MVC 4应用程序(6.1.6)中实现了ReCaptcha。 ReCaptcha工作正常,控制器获得正确的captcha有效状态,一切正常。问题是,当验证码不正确时,我设置ModelState.addmodeleror(string,string)并返回模型,以显示输入的验证码不正确,但视图从未触发Html.ValidateMessage(“验证码错误”)以显示在ModelState中更新的实际错误消息 任何帮助或建议都将不胜感激 控制器:Asp.net mvc 未触发ReCaptcha MVC razor验证消息,asp.net-mvc,razor,asp.net-ajax,umbraco,recaptcha,Asp.net Mvc,Razor,Asp.net Ajax,Umbraco,Recaptcha,我是MVC的新手,在这个问题上有点困惑 昨晚我在我的Umbraco MVC 4应用程序(6.1.6)中实现了ReCaptcha。 ReCaptcha工作正常,控制器获得正确的captcha有效状态,一切正常。问题是,当验证码不正确时,我设置ModelState.addmodeleror(string,string)并返回模型,以显示输入的验证码不正确,但视图从未触发Html.ValidateMessage(“验证码错误”)以显示在ModelState中更新的实际错误消息 任何帮助或建议都将不胜感
[HttpPost]
[RecaptchaControlMvc.CaptchaValidator]
public ActionResult SubmitContactFormAction(Models.ContactFormModel model, bool captchaValid, string captchaErrorMessage)
{
if (!captchaValid)
{
ModelState.AddModelError("captcha-error", captchaErrorMessage);
return View(model);
}
else
{
// Test ModelState and do stuff
}
}
视图:
@model-WebStaging.Models.ContactFormModel
@使用Recaptcha
@使用(Ajax.BeginForm(“SubmitContactFormAction”、“ContactForm”、null、新的AjaxOptions{HttpMethod=“POST”}、新的{@id=“frmContactForm”}))
{
@Html.ValidationSummary(true)
标有*的字段是必填的
@Html.LabelFor(model=>model.Name)*
@Html.TextBoxFor(model=>model.Name,新的{@class=“input-242”})
@Html.ValidationMessageFor(model=>model.Name)
@Html.LabelFor(model=>model.Email)*
@Html.TextBoxFor(model=>model.Email,新的{@class=“input-242”})
@LabelFor(model=>model.Phone)
@Html.TextBoxFor(model=>model.Phone,新的{@class=“input-242”})
@Html.LabelFor(model=>model.Subject)*
@Html.TextBoxFor(model=>model.Subject,新的{@class=“input-242”})
@Html.LabelFor(model=>model.Message)*
@Html.TextAreaFor(model=>model.Message,新的{@class=“input textarea”})
@Html.Raw(Html.GenerateCaptcha(“验证码”、“白色”))
@Html.ValidationMessage(“验证码错误”)
发送
我认为问题的原因在于ReCaptcha不是一个简单的web控件。我认为您可以轻松解决问题,使用新的类或样式属性更改“captcha结果”div
<div id="captcha-result" class="someClassWithRedBigFont" >
@Html.ValidationMessage("captcha-error")
</div>
@Html.ValidationMessage(“验证码错误”)
如果您使用jQuery,您可以检查。因此,我将表单从ajax更改为常规发布表单(Html.BeginUmbracoForm()),并按预期工作。因此,我在ajax/JSON中做了一些不正确的事情。
<div id="captcha-result" class="someClassWithRedBigFont" >
@Html.ValidationMessage("captcha-error")
</div>