如何让[AllowHtml]和[CaptchaVerify]一起工作?

时间:2015-09-18 12:12:06

标签: c# asp.net-mvc-5 captcha

我在这里遇到了一个陷阱22。我有一个问题,这两个属性不能一起工作。如果我从控制器操作中删除[AllowHtml]属性,则我的属性上的[CaptchaVerify]属性有效。

我正在

  

从中检测到一个潜在危险的Request.Form值   客户端

异常。

我怎样才能解决这个问题?

这是我应该允许html的属性:

[AllowHtml]
[Required(ErrorMessage = "Please enter a comment.")]
public string CommentText
{
    get; set;
}

我的视图看起来像这样(我已经为此示例截断了它):

@using CaptchaMvc.HtmlHelpers

@using (Html.BeginForm("Article", "Home", FormMethod.Post))
{
    @Html.TextBoxFor(m => m.CommentText, new { @class = "form-control" })
    @Html.Captcha("Refresh", "Enter the phrase shown above", 4, "Captcha image is required.", false)
    <input type="submit" value="Post" />
}

我的控制器看起来像这样:

[HttpPost]
[CaptchaMvc.Attributes.CaptchaVerify("Captcha is not valid")]
public async Task<ActionResult> Article(ArticleModel model)
{
    // Check the captcha.
    if (ModelState["CaptchaInputText"] != null && ModelState["CaptchaInputText"].Errors.Count > 0)
    {
        ViewBag.CaptchaError = "Please fill in the text above";
    }

    // Rest of my action
}

1 个答案:

答案 0 :(得分:1)

我下载了源代码,并找到了解决方案。

不幸的是,他们需要对源代码进行更改 https://captchamvc.codeplex.com/workitem/11

您可以按照上面的链接下载源代码并进行更改,或者等待更新源代码。