如何让 [AllowHtml] 和 [CaptchaVerify] 一起工作?
How to make [AllowHtml] and [CaptchaVerify] work together?
我被困在了第 22 个问题上。我有一个问题,这两个属性不能一起工作。如果我从控制器操作中删除 [CaptchaVerify]
属性,我的 属性 上的 [AllowHtml]
属性会起作用。
我得到
A potentially dangerous Request.Form value was detected from the
client
例外。
我该如何解决这个问题?
这是我的 属性 应该允许 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
}
我还在做一些研究,但现在我找到了这个解决方案,更改网络配置:
进行此更改将禁用所有表单请求验证,因此我强烈不推荐
我也尝试添加全局过滤器,但没有成功:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ValidateInputAttribute(false));
}
这个库是开源的,尝试下载并调试代码
我下载了源码,找到了解决办法
不幸的是,他们需要更改源代码
https://captchamvc.codeplex.com/workitem/11
您可以按照上面link下载源码自行修改,或者等待更新源码。
我被困在了第 22 个问题上。我有一个问题,这两个属性不能一起工作。如果我从控制器操作中删除 [CaptchaVerify]
属性,我的 属性 上的 [AllowHtml]
属性会起作用。
我得到
A potentially dangerous Request.Form value was detected from the client
例外。
我该如何解决这个问题?
这是我的 属性 应该允许 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
}
我还在做一些研究,但现在我找到了这个解决方案,更改网络配置:
进行此更改将禁用所有表单请求验证,因此我强烈不推荐
我也尝试添加全局过滤器,但没有成功:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ValidateInputAttribute(false));
}
这个库是开源的,尝试下载并调试代码
我下载了源码,找到了解决办法
不幸的是,他们需要更改源代码 https://captchamvc.codeplex.com/workitem/11
您可以按照上面link下载源码自行修改,或者等待更新源码。