Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 未触发ReCaptcha MVC razor验证消息_Asp.net Mvc_Razor_Asp.net Ajax_Umbraco_Recaptcha - Fatal编程技术网

Asp.net mvc 未触发ReCaptcha MVC razor验证消息

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中更新的实际错误消息 任何帮助或建议都将不胜感

我是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>