C# BotDetect验证码错误消息未显示ASP.NET MVC

C# BotDetect验证码错误消息未显示ASP.NET MVC,c#,asp.net-mvc,captcha,botdetect,C#,Asp.net Mvc,Captcha,Botdetect,我已将BotDetect验证码集成到我的ASP.NET MVC表单中,当用户输入错误的验证码值时,我无法获得要显示的验证消息 我需要更改什么才能显示验证消息 编辑-我添加了视图的Html.BeginForm部分,以指示回发将在控制器中执行不同的操作 源代码-视图 @using(Html.BeginForm("Create", "Contact", FormMethod.Post, new { enctype = 'multipart/form-data' })) { @{

我已将BotDetect验证码集成到我的ASP.NET MVC表单中,当用户输入错误的验证码值时,我无法获得要显示的验证消息

我需要更改什么才能显示验证消息

编辑-我添加了视图的
Html.BeginForm
部分,以指示回发将在控制器中执行不同的操作

源代码-视图

@using(Html.BeginForm("Create", "Contact", FormMethod.Post, new { enctype = 'multipart/form-data' }))
{
    @{ 
        MvcCaptcha contactCaptcha = new MvcCaptcha("ContactCaptcha");
        contactCaptcha.UserInputID = "ContactCaptchaCode";
    }
    To prevent spam, we utilize a verification code system.  Please enter the code as it is shown in the box below.<br />
    @Html.Captcha(contactCaptcha)<br />
    Code:<br />
    @Html.TextBox("ContactCaptchaCode", string.Empty, new { @class = "form-   control", @style = "width: 200px" })                
    <div class="row">
        <div class="col-sm-12" style="text-align: right">
            <input type="submit" value="Send" class="btn-default" />
            @Html.ValidationMessage("ContactCaptchaCode", new { @class = "text-danger" }) 
        </div>
    </div>
}

您必须添加
!如果ModelState.IsValid
为false则返回视图,因为在代码中,如果模型无效,则不执行任何操作,这不是验证的工作方式。那就这样做吧

[HttpPost]
[AllowAnonymous]
[CaptchaValidation("ContactCaptchaCode", "ContactCaptcha", "Please enter the correct CAPTCHA code.")]
public ActionResult Create(Models.Contact formContact)
{
    if(!ModelState.IsValid)
  {
      return view(formContact);
  }

    //if valid do your code here
}
现在,如果您放置一个断点,您将看到
ModelState
将有
,如果任何验证失败,并且执行时返回视图(formContact)它将返回带有验证消息的视图,它将匹配键并显示错误消息,例如,假设我有

@Html.ValidationMessage("ContactCaptchaCode");

如果此属性的验证失败,则
modelstate
将具有
key=ContactCaptchaCode
value=请输入正确的验证码。

您是说
modelstate
即使输入了错误的值也始终有效吗?如果无效,则只需
否则{return View}(formContact);}
返回视图并显示错误message@StephenMuecke否,当他们输入正确的验证码时,ModelState是有效的,当他们输入无效的验证码时,它会阻止表单被处理,并且
ModelState.IsValid=false
当您返回视图时,如果
ModelState
无效,您是说我未显示消息?我应该提到的一点是,我正在使用
Html.BeginForm
重载,在表单提交后显式配置路由。即
(“创建”、“联系”、FormMethod.Post)
。这会对验证码验证的行为产生影响吗?
@Html.ValidationMessage("ContactCaptchaCode");