【发布时间】:2015-07-09 14:27:19
【问题描述】:
我已经安装了captcha plugin 并按照设置说明进行操作。验证码在页面上完美呈现,但在提交表单时,ModelState.IsValid 始终为真,无论我输入什么。显然,如果验证码无法验证,那对我来说就没什么好处了。
这是我的控制器:
[HttpPost]
[CaptchaValidation("CaptchaCode", "SampleCaptcha", "Incorrect CAPTCHA code!")]
public ActionResult Register(AccountModel model)
{
if (!ModelState.IsValid)
{
// TODO: Captcha validation failed, show error message
}
else
{
// TODO: Captcha validation passed, proceed with protected action
}
return View();
}
这是我的观点:
<link href="@BotDetect.Web.CaptchaUrls.Absolute.LayoutStyleSheetUrl" rel="stylesheet" type="text/css" />
<form class="form-horizointal" action="@Url.Action("Register", "Account")" method="POST">
<div class="form-group">
@Html.LabelFor(m => m.FirstName, new { @class = "col-sm-2 control-label" })
@Html.TextBoxFor(m => m.FirstName, new { placeholder = "First Name"})
@Html.LabelFor(m => m.LastName, new { @class = "control-label", placeholder = "Last Name" })
@Html.TextBoxFor(m => m.LastName, new { placeholder = "Last Name" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.Email, new {@class = "col-sm-2 control-label", placeholder = "Email"})
@Html.TextBoxFor(m => m.Email, new {placeholder = "Email"})
</div>
<div class="form-group">
@{ MvcCaptcha sampleCaptcha = new MvcCaptcha("SampleCaptcha"); }
@Html.Captcha(sampleCaptcha)
@Html.TextBox("CaptchaCode")
</div>
<div class="form-group">
captcha goes here
</div>
<div class="form-group">
<input type="submit" class="btn btn-default" value="Register"/>
</div>
</form>
有人知道为什么这对我不起作用吗?感谢您的帮助!
【问题讨论】:
-
哪个验证码插件?其中之一使您的 VM 从库的模型继承变得势在必行(在这种情况下,这可能是问题 - MVC 不知道其他属性(y/ies)并且没有理由验证它)。 EDIT 从头开始,链接几乎是第一个单词。我想该睡觉了。
-
更新:我已经做了一些事情,比如将验证码字段添加为模型属性,在最后一遍它神奇地开始工作。我不确定为什么。 :-/
-
您是否完成了来自captcha.com/doc/aspnet/howto/asp.net-mvc-captcha.html 的其余部分指令,其中包括路由更改?
标签: c# asp.net-mvc captcha