ValueProviderCollection 不尊重 AllowHtml 属性

ValueProviderCollection not Respecting AllowHtml attribute

我正在网站上使用所见即所得的编辑器。有问题的编辑器是 nicEdit。

我的 mvc 模型抛出 "A potentially dangerous Request.Form value was detected" 异常时遇到一些问题。

我试图通过在我的内容上放置一个 AllowHtml 属性来解决这个问题 属性:

[AllowHtml]
public string Contents { get; set; }

此代码中抛出异常:

public static string GetStringValue(this IValueProvider provider, string key)
{
    return provider.getValue(key);
}

在 运行 时间实例化的特定提供程序是内置的 ValueProviderCollection,包含一个 System.Web.Mvc.FormValueProvider,我的 reading here 建议应该遵守 AllowHtml 属性。

那么,我做错了什么?

编辑:所以我的前辈告诉我我正在工作的 class 是 IValueProvider 的扩展(这显然是 "this IValueProvider provider" 的意思)。

不确定这是否会对事情产生影响,但我想为了完成起见我会提到它。

阅读 excellent blog post on the topic 后,我实施了我的解决方案。它最终变得相当简单。

我提供了一个与现有方法类似的方法:

public static string GetStringValue(this IUnvalidatedValueProvider provider, string key, performValidation)
{
    return provider.getValue(key, !performValidation).AttemptedValue;
}

在调用代码中,对于我不想验证的特定 属性,我进行了以下调用:

var content = (provider as IUnvalidatedProvider).GetValue(key, false);