[英]BotDetect Captcha Error Message is not displaying ASP.NET MVC
我已将BotDetect验证码集成到我的ASP.NET MVC表单中,当用户输入不正确的Captcha值时,无法显示验证消息。
我需要更改什么才能显示验证消息?
编辑 -我添加了视图的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>
}
源代码-控制器
[HttpPost]
[AllowAnonymous]
[CaptchaValidation("ContactCaptchaCode", "ContactCaptcha", "Please enter the correct CAPTCHA code.")]
public ActionResult Create(Models.Contact formContact)
{
if(ModelState.IsValid)
{
//do stuff here is correct captcha value
}
}
您必须添加!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
}
现在,如果您放置一个断点,您将看到,如果任何验证失败并且您return view(formContact);
则ModelState
将具有keys
和values
return view(formContact);
它将返回带有验证消息的视图,它将与键匹配并显示错误消息,例如,假设我有
@Html.ValidationMessage("ContactCaptchaCode");
如果对此属性的验证失败,则modelstate
将具有key=ContactCaptchaCode
和value=Please enter the correct CAPTCHA code.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.