C# 如何使[AllowHtml]和[CaptchaVerify]协同工作?

C# 如何使[AllowHtml]和[CaptchaVerify]协同工作?,c#,asp.net-mvc-5,captcha,C#,Asp.net Mvc 5,Captcha,我被困在第22条陷阱里了。我有一个问题,这两个属性不能一起工作。如果我从控制器操作中删除[captchavirify]属性,则我的属性上的[AllowHtml]属性有效 我要去拿 潜在危险的请求。从中检测到表单值 客户 例外 我怎样才能避开这个问题? 以下是我的属性,它应该允许html: [AllowHtml] [Required(ErrorMessage = "Please enter a comment.")] public string CommentText { get; se

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

我要去拿

潜在危险的请求。从中检测到表单值 客户

例外

我怎样才能避开这个问题?


以下是我的属性,它应该允许html:

[AllowHtml]
[Required(ErrorMessage = "Please enter a comment.")]
public string CommentText
{
    get; set;
}
我的视图如下所示(本例中我已将其截断):

@使用CaptchaMvc.HtmlHelpers
@使用(Html.BeginForm(“Article”、“Home”、FormMethod.Post))
{
@Html.TextBoxFor(m=>m.CommentText,新的{@class=“form control”})
@验证码(“刷新”,“输入上面显示的短语”,4,“需要验证码图像”,false)
}
我的控制器如下所示:

[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
}
[HttpPost]
[CaptchaMvc.Attributes.CaptchaVerify(“Captcha无效”)]
公共异步任务项目(ArticleModel模型)
{
//检查验证码。
if(ModelState[“CaptchaInputText”]!=null&&ModelState[“CaptchaInputText”]。Errors.Count>0)
{
ViewBag.CaptchaError=“请填写以上文字”;
}
//我其余的行动
}

我仍在做一些研究,但现在我找到了这个解决方案,请更改web配置:

执行此更改将禁用所有表单请求验证,因此我强烈建议不要使用

我也尝试添加globalfilter,但没有成功:

  public static void RegisterGlobalFilters(GlobalFilterCollection filters)
  {
     filters.Add(new ValidateInputAttribute(false));
  }

这个库是开源的,试着下载并调试代码

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

不幸的是,他们需要对源代码进行更改


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

非常好。很好用!非常感谢。
  public static void RegisterGlobalFilters(GlobalFilterCollection filters)
  {
     filters.Add(new ValidateInputAttribute(false));
  }