【发布时间】:2017-03-11 00:55:22
【问题描述】:
我已将 BotDetect Captcha 集成到我的 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即使你输入了错误的值也总是有效的? -
如果无效,那么你只需要
else { return View(formContact); }返回视图并显示错误信息 -
@StephenMuecke 不,当他们输入正确的验证码时,ModelState 是有效的,当他们输入无效的验证码时,它会阻止表单被处理,
ModelState.IsValid = false -
如果
ModelState无效返回视图时,你是说消息不显示?
标签: c# asp.net-mvc captcha botdetect