概念/述语
从这里开始
数据库
开发入门
程序扩展
使用介绍
其它

纸壳CMS自带验证码,在表单中添加验证码也比较简单。只需要将某个字段定义为验证码即可,纸壳CMS将会自动验证用户输入的验证码是否有效。

ViewModel中定义一个Captcha属性,例如:

[DataTable("CMS_Message")]
public class MessageEntity : EditorEntity
{
    [Key]
    public int ID { get; set; }
    public string Email { get; set; }
    public string PostMessage { get; set; }
    public string Reply { get; set; }

    [NotMapped]
    public string Captcha { get; set; }
}

然后元数据的配置中将Captcha属性配置为验证码:

class MessageMetaData : ViewMetaData<MessageEntity>
{
    protected override void ViewConfigure()
    {
        ......
        ViewConfig(m => m.Captcha).AsImageCaptcha();
    }
}

再将验证码输出到表单中:

<div class="form-group">
    @Html.EditorFor(m => m.Captcha)
    @Html.ValidationMessageFor(m => m.Captcha)
</div>

最后在Controller中使用ModelState.IsValid来判断用户的所有输入是否验证通过,包括验证码:

[HttpPost, ValidateAntiForgeryToken, RenderRefererPage]
public IActionResult PostMessage(MessageEntity entity)
{
    if (ModelState.IsValid)
    {
        entity.Status = (int)RecordStatus.InActive;
        var result = _messageService.Add(entity);
        ModelState.Merge(result);
        if (!result.HasViolation)
        {
            TempData["Message"] = _localize.Get("Thank You for your submit!");
        }
    }
    return View(entity);
}

当用户的输入无效时,将会返回页面提示用户重新输入。

微信公众号